【问题标题】:What is the name of the error that doesn't allow you to use :: to resolve an enum?不允许您使用 :: 来解析枚举的错误的名称是什么?
【发布时间】:2012-09-24 16:00:42
【问题描述】:

在 C++ 中使用枚举时,我喜欢使用 EnumName::Value(而不仅仅是 Value)。在 C++ 中,这可能是警告或错误,具体取决于编译器设置。

在 XCode 中,允许我不将此作为编译器错误出现的设置的名称是什么?

(去掉ErrorLevel::可以解决错误)

【问题讨论】:

  • 标准 C++ 中的 AFAIK 这只是一个错误(除非您使用的是 C++11“枚举类”)。
  • VC++ 将其标记为警告C4482。这是因为我导入了相同的代码(来自另一个 xCode 项目)并且突然出现了错误。一定有一些设置导致它出现错误。
  • 事实上,就标准而言,它是一个错误,VC++ 允许它是一个非标准扩展。

标签: c++ xcode4 enums compiler-errors


【解决方案1】:
  • 如果你使用,你的语法是正确的:

    enum EnumName
    {
    Value 
    }
    ...
    EnumName n = EnumName::Value;
    

    另外请注意,如果您使用,则可以要求使用EnumName::Value 而不是仅仅使用Value,方法是使用enum class 而不是enum:

    enum class EnumName
    {
    Value 
    }
    ...
    EnumName n = EnumName::Value; //ok
    EnumName fuuu = Value; // compilation error
    
  • 否则,您可以使用命名空间包装您的枚举声明

    namespace EnumName {
    enum EnumName
    {
    Value 
    }
    }
    ...
    EnumName::EnumName n = EnumName::Value;
    

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多