C++ c++;在类can';私人通道

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..-(通过添加主功能

我试图定义两个类,在其中一个类中声明一个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-(即使在清理和重建项目后仍然存在)

我认为这可能是我如何实现它的一个问题,所以我对答案中的代码进行了复制粘贴:

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错误。。。