我用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。
请问这到底是个什么问题??
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。
请问这到底是个什么问题??
这是C++/CLI的语法,定义一个引用类型public class B{ public :int mem; }
在C++/CLI里,你这样写,其实是定义一个值类型,编译器允许你编译通过,但实际上这个Struct没有任何作用,只有这个名字而已.正确的写法:
public value class B {public: int mem;}