我在消息头中有一个表示消息类型的字段。该字段是两个字符,如“AR”。我想用一个枚举类来表示它,这样我就可以强制在switch
语句中处理所有类型。
在enum class
中,我们会看到枚举的值是由两个char值定义的。但是,我很纠结,因为它必须是constexpr
。
这不能编译,但我在寻找这样的东西:
enum class AnEnum : uint16_t
{
value_one = atoi(std::string("AR").c_str()),
value_two = atoi(std::string("PF").c_str())
};
在上面的示例中,一个消息头包含字符AR,另一个消息类型包含PF。
2条答案
按热度按时间8tntrjer1#
我是这样实现的:
4c8rllxm2#
atoi
将整数字符串表示形式转换为整数。"AR"
和"PR"
不是整数,因此atoi
不是所需的。多亏了位掩码,这才是你真正想要的:
对于在消息中收到的字符串,您不需要在编译时转换它,因为该字符串只在运行时才知道。为了避免重复,在编译时使用它是很方便的,这样同样的转换可以用于枚举值。
Complete Example