我有一个班级Parent
,其班级friend
为class Controller {
// I can use x;
};
class Parent {
friend class Controller;
int x;
};
:
Parent
有没有办法指定Controller
的整个子类层次结构将[Evetns]
作为朋友而没有在我拥有的300个单独的类中明确指定它?
答案 0 :(得分:1)
RE
“有没有办法指定
Parent
的整个子类层次结构将Controller
作为朋友,而没有在我拥有的300个单独的类中明确指定它?
不,但您可以让Parent
为其派生类提供相关功能。
请注意,这可以回答您的原始问题和修改过的(根本改变的)问题。
WRT。原来的问题
评论
// I can use x;
在Controller
中,x
是Parent
成员的表示您认为Controller
类中指定的友情授予Controller
访问权限到Parent
的私人部分。
C ++友谊是单向的,而且方向相反。
答案 1 :(得分:0)
您最好使用protected
成员将这些成员保密,但仍可供您的派生类访问,这是该关键字的真正用途:
class Controller : public Parent
{
// Now I can use x;
};
class Parent {
protected:
int x;
};
注意:我假设您要使用基类...