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

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

假设我有一个定义以下摘要的 C# 项目 class:

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# 代码与它们一起工作,需要代码 conversion。这种转换产生符号(即导出函数、类、数据等),这些符号由它们自己的编译器编译而成,可以输入到 C++ 的编译器中。要构建此类符号,还需要考虑目标平台或机器。有几种工具和库可以帮助人们弥合语言之间的差距。然而,在系统之间移植生成的资源(Windows vs Mac vs Linux 等)不会像人们希望的那样顺利,尤其是当原始代码库的规模非常大时。

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

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