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

Is it possible to implement in C++/CLR an abstract class declared in C#?

本文关键字:一个 抽象类 声明 C++ 实现 CLR 是否      更新时间:2023-10-16

假设我有一个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,是否可以通过接口来实现?

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

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

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