我在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完全不熟悉。
答案 0 :(得分:2)
您的C ++ / CLI项目需要引用您的C#项目或从C#项目构建的DLL。在C ++ / CLI项目(即.cpp文件)中编译之前,您不会看到此错误。
在Visual Studio中,右键单击C ++ / CLI项目并选择References
。单击Add New Reference...
按钮。选择C#项目(如果在同一解决方案中)或C#dll(如果不在同一解决方案中)。看看错误是否消失。
此外,您的原始代码具有虚拟get()但非虚拟set()的属性。两者都必须相同。听起来你想让你的set()变得虚拟。