错误:从“int”到 enum c++ 的无效转换

Sca*_*let 2 c++ enums

当我在 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;
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何解决这个问题,请告诉我。

R S*_*ahu 6

从句法上讲,

*numFlag |= static_cast<num>(NUM_TWO);
Run Code Online (Sandbox Code Playgroud)

相当于

*numFlag = (*numFlag | static_cast<num>(NUM_TWO));
Run Code Online (Sandbox Code Playgroud)

这解释了编译器警告/错误。您需要转换|运算符的结果。

*numFlag = static_cast<num>(*numFlag | NUM_TWO);
Run Code Online (Sandbox Code Playgroud)

为了使它工作,你应该使用

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;
}
Run Code Online (Sandbox Code Playgroud)