当我用 C++ 编译以下示例代码时,出现“错误:从‘int’到‘num’的转换无效”。使用枚举名称对其进行类型转换没有帮助。
#include <iostream>
using namespace std;
typedef enum
{
NUM_ZERO = 0,
NUM_ONE = 1,
NUM_TWO = 2,
NUM_THREE = 4
} num;
int main()
{
num* numFlag;
*numFlag |= static_cast<num>(NUM_TWO);
return 0;
}
如果有人知道如何解决此问题,请告诉我。
最佳答案
从语法上来说,
*numFlag |= static_cast<num>(NUM_TWO);
相当于
*numFlag = (*numFlag | static_cast<num>(NUM_TWO));
这解释了编译器警告/错误。您需要转换 |
运算符的结果。
*numFlag = static_cast<num>(*numFlag | NUM_TWO);
<小时/>
要使其正常工作,您应该使用
int main()
{
// Make numFlag an object instead of a pointer.
// Initialize it.
num numFlag = NUM_ZERO;
// Perform the bitwise |
numFlag = static_cast<num>(numFlag | NUM_TWO);
return 0;
}
关于c++ - 错误: invalid conversion from ‘int’ to enum c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60307828/