我有一个枚举:
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);确定警告和错误.有人可以解释为什么这个修复了吗?
在C++ 11之前,您不允许将枚举数称为enum-name::enumerator.所以,eOperandType::Double如果您使用的是旧的编译器,或者没有启用C++ 11模式是无效的.如果您正在使用gcc或clang,请将-std=c++11标志传递给编译器.
如果这不是一个选项,那么return (Double);改为return ::Double;,或者return (::Double);如果你喜欢不必要的括号.没有::,Double指的是封闭类的名称.通过添加范围解析运算符,您将告诉您Double在全局命名空间中引用的编译器,即枚举器.
第三种选择是不让您的类与枚举器具有相同的名称.