Tại sao mã này không biên dịch, và những gì tôi có thể làm gì để làm cho nó biên dịch?C + + 11 trộn enum lớp và unsigned int trong trường hợp chuyển đổi sẽ không biên dịch
#include <iostream>
using namespace std;
enum class myEnum : unsigned int
{
bar = 3
};
int main() {
// your code goes here
unsigned int v = 2;
switch(v)
{
case 2:
break;
case myEnum::bar:
break;
}
return 0;
}
ideone:
prog.cpp: In function 'int main()':
prog.cpp:18:16: error: could not convert 'bar' from 'myEnum' to 'unsigned int'
case myEnum::bar:
Không để xây dựng trong GCC và Clang, làm việc trong MSVC 2013.
'static_cast (2) ' –
Borgleader
mạnh gõ enums được đánh mạnh, và không có chuyển đổi tiềm ẩn đến một loại không thể thiếu. –
Tôi nghĩ ": unsigned int" cho phép điều này? – paulm