c++ - 错误: invalid conversion from ‘int’ to enum c++

标签 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;
}

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

最佳答案

从语法上来说,

*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/

相关文章:

c++ - 快速容器以实现一致的性能

c++ - 如何计算调用递归的次数? (计算 x^n 的乘法次数)

rust - 如何为可迭代变量的枚举实现 IntoIterator?

c++ - 带有枚举的结构的 C++ 复制构造函数的签名

typescript - 为什么 typescript 枚举无助于推断联合类型

dart - 如何使用 Dart 增强型枚举应用状态模式

c++ - 规范化非常小的双数列表(可能性)

c++ - 解析未知大小的字符串

c++ - 存储内部排序的 map 元素的最快方法

java - 如何编写一组都应支持公共(public)静态方法的枚举类