//成员函数做友元函数:
//只让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版权协议,转载请附上原文出处链接和本声明。