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

10-08 14:56