c++ - 将整数或字符转换为相应的枚举
问题描述
我正在尝试使用 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 条件来做到这一点,但我不喜欢这种方法。
解决方案
正如您提到的,您的枚举类型将等同于0, 1 and 2
. 但是,您可以在声明中为枚举赋予不同的值。
enum class Type : uint8_t
{
O = 'O',
X = 'X',
None
};
Type t = static_cast<Type>('X');
但是,您不能再使用 0 和 1。要注意的另一件事是,如果您专门使用 use char
s,则可能应该将其用作基础类型,而不是uint8_t
因为不能保证它们是相同的。
推荐阅读
- php - 为什么我尝试了 sleep 方法后我的网站会无限加载?
- html - 将页面分成 3 列,内容位于更宽的中心列?
- c++ - 将数组加在一起的索引序列
- java - JPA休眠多对一关系
- docker - opennms 的 docker 版本有 Rest API 吗?
- c# - 无法使用 HMACSHA256 生成正确的签名
- node.js - 使用 jest 和模拟器调用登录的 Firebase Auth 测试抛出错误:禁止标头 X-Client-Version
- typescript - 由 client-s3 Typescript 库上传时使 S3 对象公开
- python - 使用分类数据和数值数据绘制 pandas 数据帧的散点图
- jquery - Datables 从 Ajax 请求中渲染嵌套对象和数组