我有組件的一個有趣的堆棧我想把他們放在一起: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