c++ - 如何访问头文件中定义的常量?

标签 c++

下面是我的.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/

相关文章:

c++ - #include <iostream.h> 和#include <iostream> 之间有什么区别?

c++ - 链接列表示例 - 为什么使用它们?

c++ - 鼠标点击 handle

c++ - OpenCV:将 C++ 类与 C API 一起使用是个坏主意吗?

c++ - 为什么 C 头文件不增加二进制文件的大小?

c++ - 您会推荐 Todd Hoff 的《C++ 编码标准》吗?

c++ - VxWorks 中的成员函数指针

c++ - 无法定位错误cpp linux

c++ - 为什么在C++中这个double值乘以2会出现计算错误?

c++ - 在 Visual Studio 2010 中使用 SFML