2015-02-10 69 views
-1

說我有以下的抽象類定義了一個C#項目:是否可以在C++/CLR中實現在C#中聲明的抽象類?

public abstract class MyAbstractClass 
{ 
    public abstract void DoIt(string param); 
} 

我可以然後實現它在C++/CLR作爲

public ref class MyDerivedClass : public MyAbstractClass 
{ 
    public: 
     void DoIt(String^ param) 
     { 

     } 

}; 

如果答案是NO, You can't do that,是有可能這樣做它帶有一個接口?

+0

當然你並不是指'void void'。多於一種的退貨類型不合法。 – 2015-02-10 06:24:13

+0

@BenVoigt當然不是,謝謝! – 2015-02-10 22:24:17

回答

1

是的,C++/CLI託管類型可以繼承自C#類並實現C#接口,包括重載虛擬方法。這就是通用型系統的重點。

如果它不適用於您,即使在仔細關注編譯器錯誤之後,請提出一個新問題,以顯示失敗的特定代碼和確切的編譯器錯誤消息。

0

C++/CLI編譯器不接受處理其他語言的語法和表達性語法。因此,爲了讓C#代碼與它們一起工作,需要代碼轉換。這種轉換會產生從自己的編譯器編譯的符號(即導出的函數,類,數據等),這些編譯器可以輸入到C++的編譯器中。爲了構建這樣的符號,還要考慮目標平臺或機器。有幾種工具和庫可以幫助人們彌補語言之間的差距。然而,將系統中生成的資源(Windows與Mac和Linux等)進行移植並不像人們希望的那樣流暢,特別是當原始代碼庫規模很大時。

相關問題