|
//实体思路:
//1.分别创建2个类a,b
//2.类a创建被浏览的属性 以及声明类成员函数 b2为友元
//3.类b创建 类a的实体 以及浏览函数b1 和浏览函数b2
//4.全局函数创建类b的实体 并用b的对象调用 类b的浏览函数
- #include<iostream>
- using namespace std;
- class xiaozhang
- {
- friend void xiaoming::visit2();
- public:
- string SittingRoom;
- private:
- string BedRoom;
- public:
- xiaozhang() :SittingRoom("客厅"), BedRoom("卧室") {}
- };
- class xiaoming
- {
- public:
- void visit1();
- void visit2();
- xiaozhang z;
- };
- void xiaoming::visit1()
- {
- cout << "小明正在参观小张家的:" << z.SittingRoom << endl;
- }
- void xiaoming::visit2()
- {
- cout << "小明又参观了小张家的:" << z.BedRoom << endl;
- }
- int main()
- {
- xiaoming m;
- m.visit1();
- m.visit2();
- return 0;
- }
复制代码
这段代码 是我想用 对象的方式 访问类的成员 之前写了一个用指针的方式 没有出现任何错误,我就想着用另外一个方法也写写试试,但是出现了无限循环错误,错误的地方就是 编译器一开始 提示 z.BedRoom没有权限访问
但是 我在xiaozhang类中 明明 声明了 friend void xiaoming::visit2(); 是友元 我估计是 编译器阅读顺序问题 但是 当我试着把 xiaoming类 放在 xiaozhang类前面后 编译器又会提示 z 未知标识符 反正是各种错误 好像是成了 循环 依赖的问题了 , 有没有大神 能帮助一下 研究了一晚上到现在了 还没解决 就是想用对象实现下 类成员函数做友元的
这两个类谁放前面都不行,他们是相互依赖的,你可以把xiaozhang这个成员变量去掉当成参数传到xiaoming的成员函数里,这样xiaoming就不依赖xiaozhang,再把xiaoming放上面,xiaoming的成员函数就可以访问xiaozhang的私有变量了
|
上一篇: win32下一篇: 为什么我的数据库在XP上用不了?什么问题?
|