c ++代码解释后::运算符

时间:2014-01-16 12:18:39

标签: c++

有人可以告诉我以下代码中的::CLOSE是什么:

Fight c;
c.type = Fight::CLOSE; //CLOSE can also become ::RANGE

我必须创建Fight类,但我不知道::CLOSE部分是什么。 我只知道c.type是bool或int。

编辑:枚举,不是int或bool

5 个答案:

答案 0 :(得分:3)

Fight必须是classstruct(可能是结构),因此CLOSE是公共常量或来自enum的值在该类中声明。那就是:

class Fight {
public:
    const bool CLOSE = false;
    //...
};

class Fight {
public:
    enum Status {
        CLOSE
    }
    //...
};

既然你说“c.type是bool或int”,我认为第一个更可能是你的Fight类的定义。

答案 1 :(得分:2)

更有可能是enum,但还可以。

内部Fight将是:

enum Something
{
   CLOSE, RANGE
};

然后Fight::CLOSEFight::RANGE是具有不同值的整数常量。

在C ++手册中阅读枚举(“枚举类型”)。

::语法(在此上下文中)是您访问类的静态成员的方式。例如,您调用静态成员函数,如Fight::someFunc()

答案 2 :(得分:1)

它是类Fight的静态成员。

答案 3 :(得分:0)

这是在Fight类范围内声明的名称。它可能应该被声明为枚举。

struct Fight {
    enum Status {
        CLOSE,
        RANGE
    }

    Status type;
    //...
}

枚举将名称(CLOSERANGE)导出到封闭范围,即本例中类的范围。转换为int后,CLOSE将产生0,RANGE将产生1.(具有此声明顺序)

答案 4 :(得分:0)

可能是以下之一

  
      
  1. 枚举嵌套在类中。
  2.   
  3. 公开下的静态数据成员。
  4.   
  5. int / bool公共数据成员。
  6.