我正在开发一款游戏,我需要找到一种方法来获取游戏中某个"地图块"的值(以char格式).我有一个DisplayableObject类来处理所有精灵,还有一个子类ThreeDCubePlayer来处理玩家对象.为了便于呈现/更新所有内容,所有DisplayableObject都存储在一个数组中,第0个单元格包含播放器(类型为ThreeDCubePlayer).ThreeDCubePlayer与DisplayableObject有不同的构造函数(它需要两个额外的参数),只有ThreeDCubePlayer具有我需要的GetMap()函数.所以,这是我到目前为止所做的:
ThreeDCubePlayer* cubePlayer = &((ThreeDCubePlayer &)m_ppDisplayableObjects[0]);
char mapEntry = GetMapEntry((int)*(cubePlayer->GetMapX()), (int)*(cubePlayer->GetMapY()));
Run Code Online (Sandbox Code Playgroud)
这是ThreeDCubeGame.cpp(控制地图和键盘输入的功能)的一部分.我遇到的问题是这两行都在编译时出现"非法间接"错误.我认为这个错误是当我尝试取消引用不是指针的东西时,我确信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* ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9095 次 |
| 最近记录: |