c++ - 在嵌套名称说明符中使用枚举(编译器警告)

标签 c++ enums

我有一个枚举:

enum eOperandType
{
    Int8,
    Int16,
    Int32,
    Float,
    Double
};

和'Double'类的成员函数

eOperandType    Double::getType(void) const
{
        return (eOperandType::Double);
}

它给了我关于在嵌套名称说明符中使用枚举的编译器警告。

我还将返回行切换为:return (Double); 但它只是给了我一个关于预期表达式的错误。

我该如何解决?


编辑:将行更改为 return (::Double); 确实修复了警告和错误。有人可以解释为什么这样可以修复它吗?

最佳答案

在 C++11 之前,您不能将枚举数称为 enum-name::enumerator。因此,如果您使用的是旧编译器或未启用 C++11 模式,则 eOperandType::Double 无效。如果您使用的是 gcc 或 clang,请将 -std=c++11 标志传递给编译器。

如果这不是一个选项,则将 return (Double); 更改为 return::Double;,或 return (::Double); 如果你喜欢不必要的括号。如果没有 ::Double 指的是封闭类的名称。通过添加范围解析运算符,您告诉编译器您在全局命名空间中引用 Double,即枚举数。

第三种选择是不要给你的类取与枚举数相同的名字。

关于c++ - 在嵌套名称说明符中使用枚举(编译器警告),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48430995/

相关文章:

javascript - 如何在 grpc-web 中将枚举值转换为字符串

c++ - 在 Windows 上安装 libusb 以与 Qt 一起使用

c++ - 在 C++ 中将 double 转换为 (IEEE 754) 64 位二进制字符串表示形式

c++ - assert 语句在 C++ 中不起作用

使用反射的 Java 通用枚举类

java - 从 JNI 调用 Java Enum 方法

java - 枚举的通用类,值的数量

c++ - 访问冲突 : 0xC0000005, 为什么会发生这种情况?

c++ - 为什么 'for_each' 不读取函数对象

entity-framework-4 - 首先是 EF 代码中的枚举