我有以下类
的层次结构class Boy : Child
class Girl : Child
class Parent
{
vector<Child> children;
}
class Anna : Parent
但是我知道在编译之前安娜总是只有男生,所以我不想只使用Parent的Child界面,我也希望Anna能够访问Boys成员,对她来说会更好孩子们! 无论如何在没有强制演员的情况下进行模拟吗?
class Anna : public Parent
{
vector<Boys> children; //Here i just Hide the base class member
}
感谢。
答案 0 :(得分:1)
根据派生类型,您无法使基类的成员更改其类型。但是,您可以使用从属成员创建模板类,并使派生类继承所需类型的基础。
如果希望派生类具有公共基础,则可以从类继承基本模板。
class BaseParent {};
template<class T>
class Parent: public BaseParent {
vector<T> children;
};
class Anna: public Parent<Boy> {};
答案 1 :(得分:0)
你可以尝试一下这个
的内容template <typename C> class Parent
{
vector<C> children;
};
class Anna : public Parent<Boy>
{
};