C++----类成员函数做友元函数

//成员函数做友元函数:
//只让visit1做building的好朋友(只有visit1能访问building的私有属性)

class Building;
class goodGay
{
public:
	goodGay();
	void visit1();
	void visit2();

private:
	Building * building;
};
//类内声明,类外实现;
class Building
{
	//让成员函数visit1做友元函数:
	friend void goodGay::visit1();
public:
	Building();
public:
	string m_sittingroom;	//客厅
private:
	string m_bedroom;		//卧室
};
Building::Building()
{
	this->m_bedroom = "卧室";
	this->m_sittingroom = "客厅";
}
goodGay::goodGay()
{
	building = new Building;
}
void goodGay::visit1()
{
	cout << "基友正在" << this->building->m_sittingroom << endl;
	//要访问私有属性的元素;
	//在Building 类中定义友元类:friend class goodGay;
	cout << "基友正在" << this->building->m_bedroom << endl;

}
void goodGay::visit2()
{
	cout << "基友正在" << this->building->m_sittingroom << endl;
	//要访问私有属性的元素;
	//在Building 类中定义友元类:friend class goodGay;
	//cout << "基友正在" << this->building->m_bedroom << endl;
}
void test01()
{
	goodGay g1;
	g1.visit1();
}
int main()
{
	test01();
	return 0;
}

1.首先定义class goodGay,其中声明visit1函数,但是不能定义它。在visit1使用class Building的成员之前必须先声明class Building;

2.接下来定义class Building , 包括对于visit1的友元声明;

3.最后定义visit1,此时他才可以使用class Building的成员。

//参考资料:C++ primer 5th


版权声明:本文为XUCHEN1230原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。