当我在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;
}