[英]C# and C++ class inheritance intermingling
我有一堆有趣的組件我想要組合在一起:
通用程序集(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的引用,看起來像是正確的名稱空間。
如何編寫語言可移植的類?
我認為您必須將MySpecific聲明為托管類,如下所示:
public ref class MySpecific : public MyBase { ... }
有關詳細信息,請參閱CLI / C ++文檔。 如果不進行修改,您將無法使用舊的C ++代碼,但我認為您應該考慮的一切都是可能的。
找到答案:
`#using "..\common\bin\debug\common.dll"`
到目前為止,除了/ clr開關(c ++方面需要被管理)之外,似乎還在起作用。
這樣可以正常工作,但如果您正在使用托管類型(即:繼承自C#類),則需要使用C ++ / CLI語法。 因此,在這種情況下,2.中的項應該看起來更像:
public ref class MySpecific : public MyBase { ... }
確保使用/ clr編譯文件很好。
這是一個描述C ++ / CLI繼承的教程 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.