C ++访问抽象类指针向量的子类的成员

用户名

错误在这里:

Rocket.cpp:31:16: error: no member named 'getThrust' in 'RocketPart'
    rocket[0]->getThrust();

当我想通过withgetThrust()通过类进行访问,我从问题顶部得到了错误消息。我究竟做错了什么?是否可以通过火箭[index]-> getThrust()访问它?Enginevector<RocketPart*> rocketrocket[i]->getThrust()

您收到的错误是正确的:getThrust类中没有调用任何函数RocketPart您可以:

  • virtual float getThrust()RocketPart课程中添加一个这可能不是一个好的解决方案,因为并非所有人都RocketPart可能包含推力。但是,您可以简单地return 0从中创建它,也可以将其制成纯虚函数(这意味着您不再需要创建RocketPart对象
  • dynamic_cast您的RocketPart对象变成了Engine这可以通过以下操作完成:

    for (size_t r = 0; r < rocket.size(); ++r) { if (const Engine* engine = dynamic_cast<Engine*>(rocket[r])) { // able to successfully convert this RocketPart into an Engine engine.getThrust(); } }

您将无法投放任何RocketPart*Engine

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章