是否可以在C ++ / CLR中实现在C#中声明的抽象类?

时间:2015-02-10 05:23:27

标签: 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,是否可以使用界面进行操作?

2 个答案:

答案 0 :(得分:1)

是的,C ++ / CLI托管类型可以继承C#类并实现C#接口,包括重载虚拟方法。这就是普通类型系统的重点。

如果它不适合你,即使在仔细注意编译器错误之后,也要问一个新问题,显示失败的特定代码和确切的编译器错误消息。

答案 1 :(得分:0)

C ++ / CLI编译器不接受处理来自其他语言的语法和表达语法。因此,要使C#代码与它们一起使用,需要代码转换。这种转换产生了从它们自己的编译器编译的符号(即导出的函数,类,数据等),这些符号可以被输入到C ++中。为了构建这样的符号,还要考虑目标平台或机器。有几个工具和库可以帮助人们弥合语言之间的差距。然而,在系统之间移植所产生的资源(Windows vs Mac vs Linux等)并不像人们希望的那样顺利,特别是当原始代码库的大小非常大时。