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

C++ 在.cpp文件中包含头文件时基类未定义,c++,c++-cli,compiler-errors,C++,C++ Cli,Compiler Errors,我在C#中声明了以下接口: 公共界面艺术界面 { 布尔标志{get;set;} 字符串艺术家{get;set;} int App{get;set;} } 我想在C++/CLI中实现: 实施.h public ref class艺术家:public ArtistInterface { 艺术家(字符串^name); 艺术家(字符串、名称、整数); 布尔旗; 字符串^name; 内部外观; 属性布尔标志 { 虚拟bool get()密封 { 返回标志; } 无效集(布尔值) { 如果(标志!=值)

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

公共界面艺术界面
{
布尔标志{get;set;}
字符串艺术家{get;set;}
int App{get;set;}
}
我想在C++/CLI中实现:

实施.h

public ref class艺术家:public ArtistInterface
{
艺术家(字符串^name);
艺术家(字符串、名称、整数);
布尔旗;
字符串^name;
内部外观;
属性布尔标志
{
虚拟bool get()密封
{
返回标志;
}
无效集(布尔值)
{
如果(标志!=值)
{
标志=值;
}
}
}
属性字符串^Name
{
虚拟字符串^get()已密封
{
返回名称;
}
无效集(字符串^value)
{
如果(名称!=值)
{
名称=值;
}
}
}
属性int应用程序
{
虚拟int get()密封
{
返回外观;
}
无效集(int值)
{
如果(外观!=值)
{
外观=价值;
}
}
}
}
直到现在一切都很好,但是如果我添加一个.cpp文件来实现这两个构造函数,在我包含“implementation.h”之后,我会得到以下错误:

Artist
:基类未定义


知道我得到了什么吗?我遗漏了一些东西,我对这个C++/CLI完全陌生。

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

在Visual Studio中,右键单击C++/CLI项目并选择
References
。单击
添加新引用…
按钮。选择C#项目(如果在同一解决方案中)或C#dll(如果不在同一解决方案中)。看看错误是否消失了


此外,原始代码的属性为virtual get(),但为non-virtual set()。两者必须相同。听起来你也想让set()成为虚拟的。

是的,我有.cpp文件,我的头文件还包括声明接口的.dll。更新了答案,更准确地说明了你需要检查的内容。看起来问题是我还需要将set()函数声明为虚拟的,因为我在接口中也声明了set,请将它添加到您的答案中,这样我就可以接受它了。