我有以下项目,其中我定义了一个名为frame的主类,并从该类派生出多种类。主类“frame”有一个受保护的变量,定义为:
class frame {
protected:
char header[4];
}
在派生类中,我希望数组头具有不同的大小,如下所示:
class dervied_frame : public frame {
protected:
char header[8];
}
所以我的问题是可以覆盖派生类中的受保护变量吗?以及如何做到这一点?
注意:我不想将标题定义为指针,然后在构造函数中我通过动态分配定义了我想要的大小。
答案 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> {
};