马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 猪猪虾 于 2022-1-17 19:47 编辑
还是无法访问私有成员
//全局函数做友元
#include <stdio.h>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
class Building
{
friend void GoodGay::visit1();
public:
Building()
{
m_sittingRoom = "客厅";
m_bedRoom = "卧室";
}
string m_sittingRoom;
private:
string m_bedRoom;
};
class GoodGay
{
public:
Building* building;
GoodGay()
{
building = new Building; //new什么就返回什么,创建了一个Building指针
}
void visit1() //让这个函数可以访问building的私有成员
{
cout << "visit1 is visting :" << building->m_sittingRoom << endl;
cout << "visit1 is visting :" << building->m_bedRoom << endl;
}
void vist2()//让这个函数不可以访问building的私有成员
{
cout << "visit2 is visting :" << building->m_sittingRoom << endl;
}
};
int main()
{
GoodGay gay;
gay.visit1();
gay.vist2();
return 0;
}
你注意你的 第 12 行 代码,系统根本不知道 GoodGay 从哪里来,因为还没有声明,直到第 31 行才出现,不能先吃饭才煮饭啊大哥。
你的问题如同: #include <iostream>
using namespace std;
int A(int a, int b){
return B(a, b); // 系统根本不懂 B() 是什么
}
int B(int a, int b){ // 这里才开始声明定义 B()
return a*b;
}
int main()
{
return 0;
}
|