错误在这里:
Rocket.cpp:31:16: error: no member named 'getThrust' in 'RocketPart'
rocket[0]->getThrust();
当我想通过withgetThrust()
通过类进行访问时,我从问题顶部得到了错误消息。我究竟做错了什么?是否可以通过火箭[index]-> getThrust()访问它?Engine
vector<RocketPart*> rocket
rocket[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] 删除。
我来说两句