返回指向继承的类C ++的指针

时间:2017-03-09 08:56:19

标签: c++ qt inheritance polymorphism

我有一个由select h1.name, h2.name from hosts_templates ht inner join hosts h1 on ht.hostid = h1.hostid inner join hosts h2 on ht.templateid = h2.hostid; 继承的基类(node),它由node2D继承(我正在开发游戏引擎)

我有一个指向我从NODE继承的对象的指针。

在我的函数CSprite2D中,我返回了一个CNode,但我无法做到

CNode* getNodeByName(QString name)

为什么这可以成为一种解决方法?我已经尝试过它返回一个CSprite2D,它就像一个魅力。 我已经尝试将我的函数声明为CSprite2D* sprite = getNodeByName("hello")

PS:如果重要的话,我正在使用Qt。而且,我是C ++的新手,所以我可以监督一些事情。

1 个答案:

答案 0 :(得分:1)

如果CSprite2D继承了CNode(在您提出的问题中称为节点),您可以执行以下操作:

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

只有当你确定返回的对象是CSprite2D *时,否则它是未定义的行为

您也可以使用dynamic_cast(参见link中的示例),dynamic_cast将返回空指针或者如果转换失败。

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