返回指针到继承的C 类

Returning pointer to inherited class C++

本文关键字:继承 指针 返回      更新时间:2023-10-16

我有一个由node2D继承的基类(node),该基础是由CSprite2D继承的(我正在使用游戏引擎)

我有一个从节点继承的对象的指针向量。

在我的功能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*时,否则是 undefined行为

您也可以使用Dynamic_cast(请参阅链接中的示例),Dynamic_cast WWILL返回null指针或演员阵容失败。

CSprite2D* sprite = dynamic_cast< CSprite2D* >(getNodeByName("hello"));