gpt4 book ai didi

c++ - 将指针转换为子类 (C++)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:29 26 4
gpt4 key购买 nike

我正在开发一款游戏,我需要找到一种方法来获取游戏中某个“ map block ”的值(字符格式)。我有一个处理所有 Sprite 的 DisplayableObject 类,以及一个处理播放器对象的子类 ThreeDCubePlayer。为了便于渲染/更新所有内容,所有 DisplayableObject 都存储在一个数组中,第 0 个单元包含播放器(类型为 ThreeDCubePlayer)。 ThreeDCubePlayer 具有与 DisplayableObject 不同的构造函数(它需要两个额外的参数)并且只有 ThreeDCubePlayer 具有我需要的 GetMap() 函数。所以,这是我到目前为止所做的:

ThreeDCubePlayer* cubePlayer = &((ThreeDCubePlayer &)m_ppDisplayableObjects[0]);

char mapEntry = GetMapEntry((int)*(cubePlayer->GetMapX()), (int)*(cubePlayer->GetMapY()));

这是 ThreeDCubeGame.cpp 的一部分(控制 map 和键盘输入的函数)。我遇到的问题是这两行在编译时都给出了“非法间接”错误。我认为这个错误是当我尝试取消引用不是指针的东西时,我确定 cubePlayer 看起来像一个指针......

有人知道我应该做什么吗?

最佳答案

使用其中一种类型安全转换,例如dynamic_cast 而不是 C 风格的转换。

如果 m_ppDisplayableObjects 是一个 DisplayableObject**,那么它看起来像这样:

ThreeDCubePlayer* cubePlayer = dynamic_cast<ThreeDCubePlayer*>(m_ppDisplayableObjects[0]);

if (cubePlayer != NULL)
{
char mapEntry = GetMapEntry(cubePlayer->GetMapX(), cubePlayer->GetMapY());
}
else // Not a ThreeDCubePlayer* ...

关于c++ - 将指针转换为子类 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852556/

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