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

The*_*ton 1 c++ enums

我有一个枚举:

enum eOperandType
{
    Int8,
    Int16,
    Int32,
    Float,
    Double
};
Run Code Online (Sandbox Code Playgroud)

和'Double'类的成员函数

eOperandType    Double::getType(void) const
{
        return (eOperandType::Double);
}
Run Code Online (Sandbox Code Playgroud)

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

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

我该如何解决这个问题?


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

Pra*_*ian 6

在C++ 11之前,您不允许将枚举数称为enum-name::enumerator.所以,eOperandType::Double如果您使用的是旧的编译器,或者没有启用C++ 11模式是无效的.如果您正在使用gcc或clang,请将-std=c++11标志传递给编译器.

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

第三种选择是不让您的类与枚举器具有相同的名称.