gpt4 book ai didi

c++ - 如何让两个类(class)成为彼此的 friend ?

转载 作者:行者123 更新时间:2023-11-30 02:29:55 26 4
gpt4 key购买 nike

#include <iostream>
using namespace std;
class hello;
class demo
{
private :
void fun()
{
printf ("Inside fun \n");
}
public :
void sun()
{
hello hobj;
hobj.run();
}
friend class hello;
};

class hello
{
private :
void run ()
{
printf("Inside Run \n");
}
public :
void gun ()
{
demo dobj;
dobj.fun();
}
friend class demo;
};

int main ()
{
demo dobj1;
dobj1.sun();
cout<<"Inside Demo \n";
hello hobj1;
hobj1.gun();
cout<<"Inside hello \n";
return 0;
}

如何让两个类(class)成为 friend ?我知道如何让一个类(class)成为其他类(class)的 friend ,但不知道如何使它成为彼此的 friend ,我尝试为两个类(class)单独进行前向声明仍然不起作用?是否有可能做到这一点 ?

它一直给我这些错误

error C2228: left of '.run' must have class/struct/union
error C2079: 'hobj' uses undefined class 'hello'

最佳答案

我认为您的问题出在此处使用不完整类型:

void sun() {
hello hobj;
hobj.run();
}

当您定义函数 sun() 时,类 hello 已声明但尚未定义。这就是为什么你不能在函数中使用它,编译器应该给你一个错误。

为了解决这个问题,只需在 hello 类定义之后定义函数 sun()

所以你的类 demo 将是:

class hello;

class demo {
// ...
public:
void sun(); // declaration
friend class hello;
};

// ...

class hello {
// ...
};

void demo::sun() {
// here the implementation and you can use 'hello' instance w/o problem.
hello hobj;
hobj.run();
}

关于c++ - 如何让两个类(class)成为彼此的 friend ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212027/

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