#include <iostream>
typedef enum my_time {
day,
night
} my_time;
int main(){
// my_time t1 = 1; <-- will not compile
int t2 = night;
return 0;
}
我预计如何分配一个enum
值对int
但在 C++ 中不是另一种方式吗?
当然这一切都是可行的C
.
隐式转换或一般转换不是相互的。只因为一个类型A
可以转换为类型B
并不意味着B
可以转换为A
.
旧枚举(无范围枚举)可以转换为整数,但另一种方式是不可能的(隐式)。这就是它的定义方式。请参阅此处了解详细信息:https://en.cppreference.com/w/cpp/language/enum https://en.cppreference.com/w/cpp/language/enum
考虑一下粗略地说enum
s 只是命名常量,对于函数来说
void foo(my_time x);
传递任意值很可能是一个错误int
。然而,一个
void bar(int x);
可以使用枚举来表示特殊值x
而其他仍然允许:
enum bar_parameter { NONE, ONE, MORE, EVEN_MORE, SOME_OTHER_NAME };
bar(NONE);
bar(SOME_OTHER_NAME);
bar(42);
这已在 C++11 中“修复”,范围枚举不会以任何一种方式隐式转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)