【发布时间】:2017-12-03 13:37:25
【问题描述】:
#include <iostream>
enum mode { MODE0=0, MODE1, NUM_MODES};
int main(int args, char ** argv) {
int i = 1;
std::cout << (i == MODE0 ? "true" : "false") << "\n";
std::cout << (i == MODE1 ? "true" : "false") << "\n";
mode test;
test = i; // error
}
为什么 i 与枚举值的比较工作正常,但将模式测试变量分配给整数值时出现编译错误?
enum.cc:10:8: 错误:从 'int' 到 'mode' 的无效转换 [-fpermissive]
我的问题是关于为什么比较有效而分配无效(不是如何修复我的代码),并且它在下面得到了一些很好的解释。
【问题讨论】:
-
您必须在分配之前进行投射。 stackoverflow.com/questions/11452920/…
-
你需要
static_cast它才能让它工作
标签: c++