覆盖派生类中的受保护变量

时间:2014-05-01 17:06:06

标签: c++ inheritance

我有以下项目,其中我定义了一个名为frame的主类,并从该类派生出多种类。主类“frame”有一个受保护的变量,定义为:

class frame {
protected:
    char header[4];
}

在派生类中,我希望数组头具有不同的大小,如下所示:

class dervied_frame : public frame {
protected:
    char header[8];
}

所以我的问题是可以覆盖派生类中的受保护变量吗?以及如何做到这一点?

注意:我不想将标题定义为指针,然后在构造函数中我通过动态分配定义了我想要的大小。

1 个答案:

答案 0 :(得分:3)

你可以使用这样的模板:

template <int headerSize>
class frame {
protected:
    char header[headerSize];
};

class dervied_frame : public frame<8> {
};

但是每个子类都有一个独特的基类,所以你真的无法用frame *做任何事情。根据您使用此类的内容,该限制可能是一个交易破坏者。您可以通过添加另一个超类来部分解决这个问题:

class frame {
public:
    void otherMethodsHere();
};

template <int headerSize>
class frameHeader : public frame {
protected:
    char header[headerSize];
};

class dervied_frame : public frameHeader<8> {
};