我用vs2008创建了一个C++类库,然后写了两个类,一个有ref,另一个没有:
public ref class A{ public :int mem; }
public class B{ public :int mem; }生成后再创建C# win32程序,再引用这个类库的dll,在使用的时候发现他们有不同:
A a = new A();
B b = new B();
最后a有mem成员,b没有。
于是我看了一下,发现b显示为struct而a显示为class,于是我用c#写一个struct C{ public int mem;}
C c = new C();
c也有mem。
请问这到底是个什么问题??

解决方案 »

  1.   

    public ref class A{ public :int mem; }
    这是C++/CLI的语法,定义一个引用类型public class B{ public :int mem; }
    在C++/CLI里,你这样写,其实是定义一个值类型,编译器允许你编译通过,但实际上这个Struct没有任何作用,只有这个名字而已.正确的写法:
    public value class B {public: int mem;}
      

  2.   

    新手,以前都搞C++,用vc6,懂很少
      

  3.   

    http://book.csdn.net/bookfiles/588/10058819198.shtml