【发布时间】:2017-07-30 04:03:11
【问题描述】:
我有一个基类 (node),它被 node2D 继承,它被 CSprite2D 继承(我正在开发一个游戏引擎)
我有一个指向从 NODE 继承的对象的指针向量。
在我的函数CNode* getNodeByName(QString name)我返回一个CNode,但我做不到
CSprite2D* sprite = getNodeByName("hello")
为什么会这样?有什么办法可以解决?我已经尝试过它返回一个 CSprite2D,它就像一个魅力。
我已经尝试将我的函数声明为virtual CNode* getNodeByName(Qstring name)
PS:如果这很重要,我正在使用 Qt。而且,我是 C++ 新手,所以我可能监督了一些事情。
【问题讨论】:
-
如果您确定 CNode* 是 CSpirite2D* 类型,您可以将其转换为 CSprite2D*,请参阅cplusplus.com/doc/tutorial/typecasting 了解有关转换和不同类型转换的更多信息。
-
CNode和CSprite2D是什么关系? -
CSprite2D 继承自 CNode2D,CNode2D 继承自 CNode。 @彼得
-
@basslo 你能举个小例子吗?我似乎找不到实现类型转换功能的方法。
-
好的,是的,我完全确定它是 CSprite2D 所以...非常感谢;)
标签: c++ qt inheritance polymorphism