你好!这个问题是因为在类`goodGay`中访问了类`Building`的私有成员`m_bedRoom`,而在类`Building`中定义了一个友元类`goodGay`,允许`goodGay`类访问`Building`的私有成员。但是你在定义`goodGay`类对象的同时,没有将其声明为友元类,所以导致编译错误。
解决办法是在`Building`类的定义前面加上`class goodGay;`的前置声明,这样就可以通过编译了。
完整代码如下:
- #include<iostream>
- using namespace std;
- // 前置声明
- class goodGay;
- // 类做友元
- class Building
- {
- friend goodGay;
- public:
- Building()
- {
- m_sittingRoom = "客厅";
- m_bedRoom = "卧室";
- }
- public:
- string m_sittingRoom;
- private:
- string m_bedRoom;
- };
- class goodGay
- {
- public:
- goodGay()
- {
- building = new Building;
- }
- Building* building;
-
- void visit()
- {
- cout << "访问到了:" << building->m_sittingRoom << endl;
- cout << "访问到了:" << building->m_bedRoom << endl;
- }
- };
- int main()
- {
- goodGay gg;
- gg.visit();
- return 0;
- }
复制代码
现在你就可以在`goodGay`的`visit`函数中正常访问`Building`类的私有成员了。希望对你有帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。