gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:15:49 28 4
gpt4 key购买 nike

我有一个基类 (node),它被 node2D 继承,它被 CSprite2D 继承(我正在研究一个游戏引擎)

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

在我的函数 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"));

关于c++ - 返回指向继承类 C++ 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690781/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com