我目前正在构建游戏“战舰”的一个糟糕版本,并且必须使用枚举数组来显示棋盘。对于我创建的标题:
enum class PlayerPiece {
AIRCRAFT,
BATTLESHIP,
CRUISER,
SUBMARINE,
PATROL,
EMPTY,
};
class Board {
public:
PlayerPiece playerBoard[100];
PlayerPiece enemyBoard[100];
void reset();
void display() const;
};
当我到达源代码时,我尝试将棋盘显示为数字。截至目前,在我运行重置命令后,主板是空的。但是在我想显示数组之后,我收到一条错误消息“没有运算符 << 与这些操作数匹配......”,我知道这意味着我需要重载 << 命令才能正确显示,但为什么不呢只显示分配的“5”?这不是 Enum 的意义吗?到目前为止我所拥有的是:
void Board::reset(){
for (int i = 0; i < 100; ++i){
playerBoard[i] = PlayerPiece::EMPTY;
enemyBoard[i] = PlayerPiece::EMPTY;
};
}
void Board::display() const{
for (int i = 0; i < 100; ++i){
cout << playerBoard[i] << endl; //
};
}
我编写了其他代码,无需重载 << 运算符即可显示 ENUM 附加的数字。我错过了什么吗?任何帮助,将不胜感激。
最佳答案
如果您想查看与作用域枚举类型关联的数字,请使用 static_cast
,如下所示:
cout << static_cast<int>(playerBoard[i]) << endl;
普通(无作用域)枚举不需要此转换,因为它们的类型隐式转换为 int 或您指定的任何基础类型。这可能就是为什么这种情况以前没有发生在您身上的原因。
关于c++ - 如何显示类中某些内容的枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40988781/