我有组件的一个有趣的堆栈我想把他们放在一起:C#和C++类的继承交织
通用组件(C#或C++ - CLI)
public class MyBase { public void MethodA() { ... } private void MethodB() { ... } protected virtual MethodC() { ... } }
测试代码组件(所有的C++ - CLI)
public class MySpecific : public MyBase{ protected: override MethodC(); };
测试模拟器(C#)
MySpecific obj = new MySpecific(); obj.MethodC();
虽然组件1可能是C++ - CLI让事情变得更简单,我真的很想保持组件3在C#。这在很大程度上是一个练习,以查看继承是否可以在任何一个方向上完成,但是我也有一个真实世界的情况,这个堆栈很有用。
我发现的第一个问题是,C++-CLI程序集不能编译,因为它不能将MyBase识别为一个类,尽管我有一个对程序集1的引用以及看起来像是正确的名称空间。
如何编写语言可移植的类?
如何让C++编译器查看MyBase?我一直得到“C2504:'Mybase':基类未定义” – Foozinator 2009-08-14 17:42:05
确保将它添加为参考,并且您已使用/ clr编译此文件。另外,确保你正在使用(或使用)适当的命名空间。这听起来像你不在使用相同命名空间的部分。您可以完全限定MyBase - 即:公共ref类MySpecific:公共MyNamespace :: MyBase {...} – 2009-08-14 18:41:00