2015-02-10 68 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等)进行移植并不像人们希望的那样流畅,特别是当原始代码库规模很大时。

相关问题