static_casting an int to enum 而不是直接初始化它有什么好处吗?
Is there any advantage in static_casting an int to enum instead of just initializing it directly?
这样做是否更安全/"better":
enum ENUM { // can be enum class too
...
};
int incoming_value_from_other_process;
auto e = static_cast<ENUM>(incoming_value_from_other_process);
比
auto e = ENUM(incoming_value_from_other_process); // more compact and readable, faster to type
EDIT :这是用于进程内 and/or 网络通信,其中枚举只是在消息中序列化,然后直接转换。
恕我直言,直接初始化就像:
enum Value {
kValue = 5,
};
Value e = kValue;
并且 static_cast
和您的初始化与直接初始化相比有缺点。 'kValue' 的初始化可以保护您免受不存在的值的影响,提高可读性等。
我认为,这两种情况是一样的。但第二种情况更具可读性。
这样做是否更安全/"better":
enum ENUM { // can be enum class too
...
};
int incoming_value_from_other_process;
auto e = static_cast<ENUM>(incoming_value_from_other_process);
比
auto e = ENUM(incoming_value_from_other_process); // more compact and readable, faster to type
EDIT :这是用于进程内 and/or 网络通信,其中枚举只是在消息中序列化,然后直接转换。
恕我直言,直接初始化就像:
enum Value {
kValue = 5,
};
Value e = kValue;
并且 static_cast
和您的初始化与直接初始化相比有缺点。 'kValue' 的初始化可以保护您免受不存在的值的影响,提高可读性等。
我认为,这两种情况是一样的。但第二种情况更具可读性。