我正在尝试定义 2 个类,在其中一个中声明一个友元函数并在另一个中实现它。我实际上是在尝试准确地了解在这篇文章中发现的内容:
我阅读了答案,并认为这是有道理的。然后在我的代码中实现它,它给了我错误:
编辑:
Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup ...\MSVCRTD.lib(crtexe.obj) - (通过添加main函数解决)
Error 2 error LNK1120: 1 unresolved externals ...\Debug\Project.exe 1 1.. - (通过添加主函数解决)
错误 3 IntelliSense:成员“one::data1”(在第 19 行声明)不可访问 ...\Friends.cpp - (即使在清理和重建项目后仍存在)
我认为这可能是我如何实现它的问题,所以我对答案中的代码进行了复制粘贴:
class one;
class two
{
private:
int data2;
public:
two()
{
data2 = 200;
}
// this goes fine, because the function is not yet defined.
int accessboth(one a);
};
class one
{
private:
int data1;
public:
one()
{
data1 = 100;
}
friend int two::accessboth(one a);
};
// don't forget "inline" if the definition is in a header.
inline int two::accessboth(one a)
{
return (a.data1 + (*this).data2);
}
但我在同一个地方遇到了同样的错误:a.data1无法访问
然后我搜索并找到了更多示例,这些示例建议使用相同的技术来解决问题,但它们都在同一个地方给了我相同的无法访问的错误......
有什么我想念的吗?提供的示例(上一篇文章中建议的解决方案)应该有效吗?规范中可能发生了一些变化?
感谢您的任何帮助。D
PS我尝试对上一篇文章发表评论,以免对此提出新问题,但由于声誉低而无法发表评论(我是新来的)。