我有一个被node
继承的基类(node2D
),它又被CSprite2D
继承了(我在开发游戏引擎)
我有一个指向我从NODE继承的对象的指针的向量。
在我的函数CNode* getNodeByName(QString name)
中,我返回一个CNode,但是我做不到
CSprite2D* sprite = getNodeByName("hello")
为什么会这样?有什么解决方法?我已经尝试过返回CSprite2D了,它的工作就像一个魅力。
我已经尝试将函数声明为
virtual CNode* getNodeByName(Qstring name)
PS:如果有问题,我正在使用Qt。而且,我是C ++的新手,所以我可能会监督一些事情。
最佳答案
如果CSprite2D继承了CNode(在您的问题中您说是节点),则可以执行以下操作:
CSprite2D* sprite = static_cast< CSprite2D* >(getNodeByName("hello"));
仅当您确定返回的对象是CSprite2D *时,否则它是未定义的行为。
您还可以使用dynamic_cast(请参见link中的示例),dynamic_cast将返回空指针,或者如果强制转换失败。
CSprite2D* sprite = dynamic_cast< CSprite2D* >(getNodeByName("hello"));