子类的类友谊

时间:2016-06-08 12:26:13

标签: c++ friend

我有一个班级Parent,其班级friendclass Controller { // I can use x; }; class Parent { friend class Controller; int x; };

Parent

有没有办法指定Controller整个子类层次结构将[Evetns]作为朋友而没有在我拥有的300个单独的类中明确指定它?

2 个答案:

答案 0 :(得分:1)

RE

  

有没有办法指定Parent的整个子类层次结构将Controller作为朋友,而没有在我拥有的300个单独的类中明确指定它?

不,但您可以让Parent为其派生类提供相关功能。

请注意,这可以回答您的原始问题和修改过的(根本改变的)问题。

WRT。原来的问题

enter image description here

评论

// I can use x;
Controller中,xParent成员的

表示您认为Controller类中指定的友情授予Controller访问权限到Parent的私人部分。

C ++友谊是单向的,而且方向相反。

答案 1 :(得分:0)

您最好使用protected成员将这些成员保密,但仍可供您的派生类访问,这是该关键字的真正用途:

class Controller : public Parent
{
    // Now I can use x;
};

class Parent {
protected:
   int x;
};

注意:我假设您要使用基类...