【问题标题】:How do I create an array of inherited class objects?如何创建继承的类对象数组?
【发布时间】:2017-01-28 17:16:55
【问题描述】:

我在处理当前项目时遇到了一些麻烦。该项目包括从文件中获取数据行并创建一个类对象数组,这些类对象都继承了一个基类。

所以,这就是我目前所理解的:

class BaseClass {
    // create empty and non-empty constructor
}

class SubClass : public BaseClass {
    // create constructor specifically for this class 
}

int main() {
    BaseClass *array[size];
    array[index] = new SubClass();

    return 0;
}

由于子类继承了基类,当我向数组中添加一个新对象时,它的类型应该是子类,对吗?

当我调试程序并查看该对象时,它不允许我指向任何子类方法/变量进行操作,这是我需要能够做的。

现在当我在寻找答案时,我遇到了静态转换,所以我尝试了以下程度:

(static_cast<SubClass*>(array[index])->subclass_variable) = some_value

但这似乎也不起作用,非常感谢任何帮助。

【问题讨论】:

  • 好的,实际的问题是什么?
  • 如何创建一个继承的类对象数组,我可以在其中单独访问和操作。

标签: c++ arrays inheritance


【解决方案1】:

处理这个问题的一种方法是在基类中定义一个接口(虚拟方法)并在SubClass中定义一个实现

class BaseClass {
    // create empty and non-empty constructor
    virtual void f() = 0;
}

class SubClass : public BaseClass {
    // create constructor specifically for this class 
    virtual void f() { std::cout << "I am your SubClass" << std::endl; }
}

那你可以拨打array[index]-&gt;f();

另一种方式是访问/类型切换类,另一种是 NVI,但这些都是更高级的主题。

【讨论】:

  • 非常感谢!这解决了它,现在它运行完美,你就是男人!
猜你喜欢
  • 2015-02-01
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
相关资源
最近更新 更多