繁体   English   中英

如何创建继承的类对象的数组?

[英]How do I create an array of inherited class objects?

我在当前项目中工作时遇到麻烦。 该项目包括从文件中获取数据行,并创建一个均继承基类的类对象数组。

因此,这是我到目前为止所了解的:

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;
}

因为SubClass继承了BaseClass,所以当我向数组添加新对象时,它应该是SubClass类型,对吗?

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

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

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

但这似乎也不起作用,对此将提供任何帮助。

一种解决方法是在基类中定义接口 (虚拟方法),并在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]->f();

另一种方法是在类上访问/类型切换,另一种方法是NVI,但这是更高级的主题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM