如何覆盖基类成员的类型?

时间:2015-02-17 13:21:48

标签: c++ class

我有以下类

的层次结构
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
} 

感谢。

2 个答案:

答案 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>
{

};