c++ - 在 .cpp 文件中包含头文件时基类未定义

标签 c++ c++-cli compiler-errors

我在 C# 中声明了以下接口(interface):

public interface ArtistInterface
{
    bool Flag { get; set; }

    string Artist { get; set; }

    int App { get; set; }
}

我想在 C++/CLI 中实现:

实现.h

public ref class Artist: public ArtistInterface
{
    Artist(String^ name);
    Artist(String^ name, int number);

    bool flag;
    String^ name;
    int appearance;

    property bool Flag
    {
        virtual bool get() sealed
        {
            return flag;
        }

        void set(bool value)
        {
            if (flag != value)
            {
                flag = value;
            }
        }
    }

    property String^ Name
    {
        virtual String^ get() sealed
        {
            return name;
        }

        void set(String^ value)
        {
            if (name != value)
            {
                name = value;
            }
        }
    }

    property int App
    {
        virtual int get() sealed
        {
            return appearance;
        }

        void set(int value)
        {
            if (appearance != value)
            {
                appearance = value;
            }
        }
    }
}

直到现在一切都很好,但是如果我添加一个 .cpp 文件来实现 2 个构造函数,在我包含“implementation.h”之后我会收到以下错误:

Artist: base class undefined

知道我得到了什么吗?我遗漏了一些东西,我是这个 C++/CLI 的新手。

最佳答案

您的 C++/CLI 项目需要引用您的 C# 项目,或从 C# 项目构建的 DLL。在 C++/CLI 项目(即 .cpp 文件)中有要编译的内容之前,您不会看到此错误。

在 Visual Studio 中,右键单击 C++/CLI 项目并选择 References。单击 Add New Reference... 按钮。选择 C# 项目(如果在同一解决方案中)或 C# dll(如果不在同一解决方案中)。查看错误是否消失。

此外,您的原始代码具有虚拟 get() 而不是虚拟 set() 的属性。两者必须相同。听起来你也想让你的 set() 成为虚拟的。

关于c++ - 在 .cpp 文件中包含头文件时基类未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243758/

相关文章:

c++ - 传递和转换方法指针

c++ - 将指针传递给参数为引用的函数

.net - 子类实例的基类句柄。有没有一种优雅的方法可以在运行时获取子类类型?

c++ - 在 Windows 窗体中将 char 转换为 system.string

c++ - 这是按什么顺序发生的

c++ - 如何设置CMFCPropertyListCtrl的列宽?

visual-c++ - C++ 中的字符串 ^ 声明

c++ - “输入”未命名类型错误。不知道为什么吗?

c++ g++ & boost, token "("之前缺少二元运算符

c++ - 在调试中无法从 'const char *'转换为 'LPCTSTR'