在.cpp文件中包含头文件时,基类未定义

时间:2011-08-30 13:16:54

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

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

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

    string Artist { get; set; }

    int App { get; set; }
}

我想用C ++ / CLI实现:

implementation.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:基类未定义

任何想法,我得到了什么?我错过了一些东西,我对这个C ++ / CLI完全不熟悉。

1 个答案:

答案 0 :(得分:2)

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

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

此外,您的原始代码具有虚拟get()但非虚拟set()的属性。两者都必须相同。听起来你想让你的set()变得虚拟。