我有一个枚举:
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/