来自 this 等问题和 this ,我的印象是从原始类型继承会导致编译器错误。但是,以下代码编译并在 Ideone 上产生预期的输出。 .
#include <iostream>
enum class Test : unsigned short int
{
TEST, TEST2, TEST3, TEST4
};
int main() {
// your code goes here
Test ans = Test::TEST3;
if(ans == Test::TEST3)
{
std::cout << "Here" << std::endl;
}
return 0;
}
class
也是 enum
的事实是否会改变前两个问答中的答案?这是标准明确定义的行为吗?
最佳答案
这并不意味着继承,而是选择枚举的底层类型。底层类型是整数类型,用于表示枚举数的值。
您可以在此示例中看到不同之处:
#include <iostream>
enum class tiny : bool {
one, two
};
enum class bigger : long {
some, lots
};
int main(int argc, char *argv[])
{
std::cout << sizeof(tiny::one) << '\n'; //prints 1
std::cout << sizeof(bigger::some) << '\n'; //prints 8
}
在 C++11 中,您可以指定作用域(即 class
)和非作用域枚举的基础类型。
关于c++ - 枚举从原始类型继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294575/