私有地继承一个结构

时间:2015-01-23 16:14:54

标签: c++ class oop design-patterns g++

假设我们有这个:

class Father
{
struct features
    {
        string hairColor = blonde;
        int age = 1;
        bool dumb = true;
    } m_Features; 

public:
    Father();
    ~Father();

    bool isDumb() { return m_Features.dumb; }
};

然后我们又开了一个班:

class FatherHandler : private Father
{
public:
    // constructors here

    void handle(Father *fa);
};

现在正在实施中:

void FatherHandler::handle(Father *fa)
{
    if (fa->isDumb)
    {
        m_Features.dumb = true; 
    }
}

g ++编译器不允许上面的代码,因为m_Features是私有的;但是我私下继承父亲;因此应该允许。如何修改上面的代码,以便FatherHandler可以修改父而不会触发此编译时错误?请注意,我私下继承以表示“使用”标准,而不是公开继承使用“is-a”标准。

1 个答案:

答案 0 :(得分:0)

私有继承意味着基类的公共成员和受保护成员在继承类中变为私有。派生类仍然无法访问私有成员,除非将其指定为朋友。