下面是我的.h
#ifndef GRID_H_
#define GRID_H_
#include <array>
namespace game{
class Grid{
public:
static const int dimension = 10;
std::array<int, dimension*dimension> grid;
Grid();
int get_cell(int x, int y);
};
}
#endif /* GRID_H_ */
以下是我的.cpp
#include "Grid.h"
namespace game {
Grid::Grid() {
// TODO Auto-generated constructor stub
}
int get_cell(int i, int j){
return (std::get<(i*dimension+j)>grid);
}
}
编译器说:
错误:未在此范围内声明“维度”
。
我尝试添加范围解析运算符 game::
,但没有成功。我如何从头文件访问这个常量?
不应该是全局公共(public)变量吗?!并且包含应该复制并粘贴头文件中的代码。我不明白哪里出了问题。抱歉这个基本问题;我是 C++ 新手/
最佳答案
您必须使用类名来访问static
成员:
int Grid::get_cell(int i, int j){
return (std::get<(i* Grid::dimension +j)>grid);
}
注意 ::
运算符指的是全局范围。但是 dimension
在类范围内,而不是全局。
您对 std::get
的使用是错误的。应该是
return (std::get< /*a constant value*/>(grid)); //
关于c++ - 如何访问头文件中定义的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23864942/