C++ Java static final 等价物

标签 c++ static constants declaration

我正在使用 C++ 编写国际象棋游戏程序。我想为类 Board 创建两个类属性:ROWS 和 COLUMNS。在 Java 中,我会将它们声明为 static 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]);
}

最佳答案

在声明 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];
};

这是因为在C++中,编译器不会向前读取。因此,为了在声明 m_TileMap 时编译器能够理解 ROWSCOLUMNS,需要先声明它们。

关于C++ Java static final 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615071/

相关文章:

java - Java中的嵌套类作为测试方法

java - 在静态初始值设定项中将子类添加到父类(super class)型的 ConcurrentHashMap?

c++ - 如何将私有(private)指针作为 const 返回到指针列表?

c++ - 在成员函数中保留对对象本身的引用

c++ - 初始化多维数组C++

c++ - 防止静态初始化顺序 "fiasco",C++

c++ - 二进制 '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)

c++ - 杀死魔数(Magic Number): "const int" vs "constexpr int" (or is there no difference in the end)

C# DeflateStream 使用 C++ 解压缩

c# - 是否有涵盖变量作用域的代码指标