C++ Java static final等价物

Luc*_*utz 7 c++ static const declaration

我正在使用C++编写国际象棋游戏.我想为类Board创建两个类属性:ROWS和COLUMNS.在Java中,我会将它们声明为静态final,一切都会按照我的意愿运行.我如何用C++做同样的声明?我需要通过其他类中的"Board :: ROWS"和"Board :: COLUMNS"来访问这些属性.

我所拥有的就是抛出编译错误,因为ROWS和COLUMNS没有在m_TileMap声明的范围内声明.如果不使用#define语句,这样做是否有良好的做法?

class Board {
  Tile *m_TileMap[ROWS][COLUMNS];

public:
  static const int ROWS = 8;
  static const int COLUMNS = 8;

  Board(int m[ROWS][COLUMNS]);
}
Run Code Online (Sandbox Code Playgroud)

Jim*_* Lu 5

在 ROWS 和 COLUMNS 声明之后声明你的 m_TileMap

例如

class Board {

public:
  static const int ROWS = 8;
  static const int COLUMNS = 8;

  Board(int m[ROWS][COLUMNS]);

private:
  Tile *m_TileMap[ROWS][COLUMNS];
};
Run Code Online (Sandbox Code Playgroud)

这样做的原因是因为在 C++ 中,编译器不会向前读。所以为了让编译器在声明 m_TileMap 时理解ROWSCOLUMNS理解它们,它们需要在之前声明。