对类中函数添加友元属性时报错

在学习c++过程中发现对类中函数添加友元属性而让函数调用其私有属性时,一直报错。

原代码如下:

class Goodgay
{
public:Goodgay();
public:  
	  Building* building;
	  void visit();
	  void visit2();
};

class Building
{
	friend void Goodgay::visit();
public:string sittingroom;
	  Building();
private:string bedroom;

};
Building::Building()
{
	this->bedroom = "卧室";
	this->sittingroom = "客厅";
}


Goodgay::Goodgay()
{
	building = new Building;
	
	
}
void Goodgay::visit()
{

		cout << "你的好基友正在访问" << building->sittingroom << endl;
		cout << "你的好基友正在访问" << building->bedroom<< endl;
	
}
void Goodgay::visit2()
{

	cout << "你的好基友正在访问" << building->sittingroom << endl;
	//cout << "你的好基友正在访问" << building->bedroom << endl;

}
void test()
{
	Goodgay gay;
	gay.visit();
	gay.visit();
}
int main()
{
	test();
	system("pause");
	return 0;
}

 

报错也千奇百怪;

看到很多人说需要将Building放到Goodgay前面;尝试后也报错

 后来发现只需要将类声明,就可以解决该问题既能解决类的定义问题,也能解决友元属性定义问题,但类building还是在类Goodgay后面才行;原代码如下

class Goodgay;
class Building;
class Goodgay
{
public:Goodgay();
public:  
	  Building* building;
	  void visit();
	  void visit2();
};

class Building
{
	friend void Goodgay::visit();
public:string sittingroom;
	  Building();
private:string bedroom;

};
Building::Building()
{
	this->bedroom = "卧室";
	this->sittingroom = "客厅";
}


Goodgay::Goodgay()
{
	building = new Building;
	
	
}
void Goodgay::visit()
{

		cout << "你的好基友正在访问" << building->sittingroom << endl;
		cout << "你的好基友正在访问" << building->bedroom<< endl;
	
}
void Goodgay::visit2()
{

	cout << "你的好基友正在访问" << building->sittingroom << endl;
	//cout << "你的好基友正在访问" << building->bedroom << endl;

}
void test()
{
	Goodgay gay;
	gay.visit();
	gay.visit();
}
int main()
{
	test();
	system("pause");
	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值