我有以下类层次结构
class Boy : Child
class Girl : Child
class Parent
{
vector<Child> children;
}
class Anna : Parent
但我在编译之前就知道 Anna 永远只有男孩,所以与其只使用 Parent 的 Child 接口(interface),我希望 Anna 也能够访问 Boys 成员,这对她的 child 来说会更好! 有没有办法在不强制转换的情况下进行建模?
class Anna : public Parent
{
vector<Boys> children; //Here i just Hide the base class member
}
谢谢。
最佳答案
您不能让基类的成员根据派生类型更改其类型。但是,您可以创建一个具有依赖成员的模板类,并让您的派生类继承所需类型的基类。
如果您希望派生类具有公共(public)基类,您可以从类继承基类模板。
class BaseParent {};
template<class T>
class Parent: public BaseParent {
vector<T> children;
};
class Anna: public Parent<Boy> {};
关于c++ - 如何覆盖基类成员的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28562536/