C++ c++;在类can';私人通道
我试图定义两个类,在其中一个类中声明一个friend函数,在另一个类中实现它。 事实上,我正努力让这篇文章中的内容发挥作用: 我读了答案,觉得有道理。 然后在我的代码中实现了它,并给出了错误: 编辑: 错误1错误LNK2019:未解析的外部符号\u main在函数\uuuuu tmainCRTStartup…\msvcrdt.lib(crtexe.obj)中引用(通过添加主函数解决) 错误2错误LNK1120:1个未解析的外部…\Debug\Project.exe 1 1..-(通过添加主功能解决) 错误3 IntelliSense:成员“one::data1”(在第19行声明)不可访问…\Friends.cpp-(即使在清理和重建项目后仍然存在) 我认为这可能是我如何实现它的一个问题,所以我对答案中的代码进行了复制粘贴:C++ c++;在类can';私人通道,c++,friend,friend-function,C++,Friend,Friend Function,我试图定义两个类,在其中一个类中声明一个friend函数,在另一个类中实现它。 事实上,我正努力让这篇文章中的内容发挥作用: 我读了答案,觉得有道理。 然后在我的代码中实现了它,并给出了错误: 编辑: 错误1错误LNK2019:未解析的外部符号\u main在函数\uuuuu tmainCRTStartup…\msvcrdt.lib(crtexe.obj)中引用(通过添加主函数解决) 错误2错误LNK1120:1个未解析的外部…\Debug\Project.exe 1 1..-(通过添加主功能
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
附言
我试图在上一篇文章中发表评论,以避免就此提出新的问题,但由于声誉不佳(我是新来的)。您缺少主要功能。比如这个:
int main() {
one a;
two b;
b.accessboth(a);
}
把它放在文件的底部,它应该可以编译。。你使用什么编译器?做未编辑的错误消息。@ sftababl我使用微软Visual C++ 2013(Visual Studio 2013 Express for Windows桌面)。@ N.M更新了我的帖子。谢谢。如果您遇到其他错误,则Intellisense错误与此无关。首先修复这些。谢谢你,它确实带走了我的另外两个错误,我仍然有无法访问的intellisense错误。。。