弄清楚特殊符号的语法

时间:2014-09-12 19:49:19

标签: c++

你好我想知道这是什么意思,这是什么意思?

fakecalss f1("getName", Type::STRING, AC::PUBLIC);

我知道它正在调用伪类的构造函数,但Type :: STRING是什么意思?这是如何实现的?

1 个答案:

答案 0 :(得分:2)

TypeAC是任何命名的范围(没有看到它们的声明,不可能多说一些;每个可能是命名空间,类类型或枚举类,或者可能是具有相关范围的类型的typedef)。 STRING是名为Type的作用域中的名称(可能是常量),PUBLIC是名为AC的作用域中的名称(可能是常量)。< / p>

当然,所有这一切都假设这些都不是宏。

一些可能性都会使Type::STRING合法代码(具有不同的语义,出于说明目的,我还添加了另一个值Type::INTEGER):

  • 命名空间中的常规常量:

    namespace Type
    {
      int const STRING = 0;
      int const INTEGER = 1;
    }
    
  • s命名空间中的正常枚举:

    namespace Type
    {
      enum foo { STRING, INTEGER };
    }
    
  • 结构中的静态常量:

    struct Type
    {
      static int const STRING = 0;
      static int const INTEGER = 1;
    };
    
  • 结构中的正常枚举:

    struct Type
    {
      enum { STRING, INTEGER };
    };
    
  • 仅限C ++ 11及更高版本:枚举类:

    enum class Type { STRING, INTEGER };
    

请注意,此列表并非详尽无遗。