c++ - 非法调用非静态成员函数(C++)?

标签 c++ scope

我正在开发一款基于用户控制在屏幕区域之间移动的球的游戏。屏幕的“ map ”在文件 ThreeDCubeGame.cpp 中定义:

char m_acMapData[MAP_WIDTH][MAP_HEIGHT];

ThreeDCubeGame.cpp 处理与 map 有关的大部分内容,但播放器(和键盘输入)由 ThreeDCubePlayer.cpp 控制。当玩家移动到新的 map 单元格时,游戏将必须检查该单元格的内容并采取相应的行动。 ThreeDCubeGame.cpp 中的这个函数是我想要使用的:

inline char GetMapEntry( int iMapX, int iMapY ) { return m_acMapData[iMapX][iMapY]; }

因此,为了检查是否允许玩家移动到 map 单元格中,我使用 ThreeDCubePlayer.cpp 中的函数调用:

if (ThreeDCubeGame::GetMapEntry(m_iMapX+MAP_OFF_X, m_iMapY+MAP_OFF_Y) == ' ')
{
// do stuff
}

但是,当我编译它时,我收到警告“错误 C2352:'ThreeDCubeGame::GetMapEntry':非静态成员函数的非法调用”。这与变量的范围有关吗?是否可以在不重新设计所有代码的情况下修复它?

最佳答案

class A {
  int i;
public:
  A(): i(0) {}
  int get() const { return i; }
};

int main() {
  A a;
  a.get();  // works
  A::get(); // error C2352
}

没有对象可以用来调用函数。

关于c++ - 非法调用非静态成员函数(C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1847038/

相关文章:

Javascript 范围 - parent sibling

c++ - 将shared_ptr<void>转换为shared_ptr<type>时智能指针的行为

c++ - 在 extern "C"{} 中声明一个使用 vector 的函数

c++ - 错误 C2084 : function 'float cbrt(float) throw()' already has a body

c++ - 智能指针作为 map 键

JavaScript 将参数传递给保持参数数据完整的函数

具有动态选择的 C++ 模板类型

c - 为什么这个程序可以工作?返回局部结构变量

JavaScript - Uncaught ReferenceError : dis1 is not defined VM535:1 (anonymous function)

python - 为什么这个 Python 对象属性没有被永久覆盖?