我有一个由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 ++的新手,所以我可以监督一些事情。
答案 0 :(得分:1)
如果CSprite2D继承了CNode(在您提出的问题中称为节点),您可以执行以下操作:
CSprite2D* sprite = static_cast< CSprite2D* >(getNodeByName("hello"));
只有当你确定返回的对象是CSprite2D *时,否则它是未定义的行为。
您也可以使用dynamic_cast(参见link中的示例),dynamic_cast将返回空指针或者如果转换失败。
CSprite2D* sprite = dynamic_cast< CSprite2D* >(getNodeByName("hello"));