首页 > 解决方案 > 将整数或字符转换为相应的枚举

问题描述

我正在尝试使用 OOP C++ 制作井字游戏。我有一个枚举,例如:

enum class Type : uint8_t
{
    O,
    X,
    None
};

我还有一个班级播放器,这里有这个功能:

Piece Player::PickPiece(std::istream& in) const
{
    in >> pickedPiece;
    in >> temp;
    auto pickedPiece = static_cast<Piece::Type>(temp);
    return pickedPiece;
}

它仅在我读取像 0 表示 O(O 表示零)、1 表示 X 的值时才有效,但我想读取像 X 或 O 这样的字符,然后将其转换为 int 枚举。我怎样才能做到这一点?我知道我可以用一些 if 条件来做到这一点,但我不喜欢这种方法。

标签: c++

解决方案


正如您提到的,您的枚举类型将等同于0, 1 and 2. 但是,您可以在声明中为枚举赋予不同的值。

enum class Type : uint8_t
{
    O = 'O',
    X = 'X',
    None
};

Type t = static_cast<Type>('X');

但是,您不能再使用 0 和 1。要注意的另一件事是,如果您专门使用 use chars,则可能应该将其用作基础类型,而不是uint8_t因为不能保证它们是相同的。


推荐阅读