c++ - 如何覆盖基类成员的类型?

标签 c++ class

我有以下类层次结构

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/

相关文章:

C++、 vector 、指针和对象混淆

c++ - 经过这么多循环后,cuda 计算给出了 nan

Ruby 类方法(如 Math)可作为实例方法包含?

c++ - #define 没有从主程序传播到 class.cpp?

c++ - C++中的比较技巧

c++ - 在 free/malloc、外部内存 Hook 上花费了大量时间?

c++ - 强制 clang 在此 C++ 代码片段上生成编译错误

ios - 访问另一个类中的 socket (Swift)

Ruby 类,我怀疑我做错了实例标记

c++ - 为什么编译器告诉我 vector<string> 未声明?