gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:47:11 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com