嵌套友元有关问题求解
嵌套友元问题求解。
位置:<thing in c++>,第三章 3.3.1嵌套友元
文中说:一个嵌套的struct并不能自动的获得存取私有的权限。
<c++ primer>18.4 嵌套类
文中说:外围类对嵌套类的成员没有特殊的访问权限,并且嵌套类对外围类也没有特殊访问权限。
也就是说:外围类对不能访问嵌套类的private,嵌套类也一样。
但嵌套类可以随意访问外围类的private成员啊,而且不用声明为友元。
是我理解错了,还是书上写的有问题?
换成struct一样的。
------解决方案--------------------
看这个帖子里我在 4# 的回答.
http://topic.****.net/u/20120409/11/85d22e1b-d8ff-416c-ba91-ee80f80bdf3b.html
位置:<thing in c++>,第三章 3.3.1嵌套友元
文中说:一个嵌套的struct并不能自动的获得存取私有的权限。
<c++ primer>18.4 嵌套类
文中说:外围类对嵌套类的成员没有特殊的访问权限,并且嵌套类对外围类也没有特殊访问权限。
也就是说:外围类对不能访问嵌套类的private,嵌套类也一样。
- C/C++ code
class Obj_A { public: Obj_A() { a = 10; } class Obj_B { friend class Obj_A; //外围类要想访问嵌套类private成员必须声明为friend public: Obj_B() { a = 20; } void f(Obj_A a) { a.a = 1; //嵌套类可以随意访问外围类的private成员 } private: int a; }; void f(Obj_B b) { b.a = 1; } private: int a; };
但嵌套类可以随意访问外围类的private成员啊,而且不用声明为友元。
是我理解错了,还是书上写的有问题?
换成struct一样的。
------解决方案--------------------
看这个帖子里我在 4# 的回答.
http://topic.****.net/u/20120409/11/85d22e1b-d8ff-416c-ba91-ee80f80bdf3b.html