2014-01-16 7 views
1

Может кто-то мне подсказывает, что в следующем коде ::CLOSE:C++ код объяснение после :: Оператор

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

Я должен создать класс бой, но я понятия не имею, что это ::CLOSE часть. Я просто знаю, что c.type - это bool или int.

Edit: перечисление, а не INT или BOOL

ответ

3

Fight должен быть class или struct (вероятно, структура), поэтому CLOSE является либо публичной постоянной или значение из enum, объявленная внутри этого класса. То есть:

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

или

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

Поскольку вы сказали, что «Тип Ç является BOOL или INT», я думаю, что первый из них, скорее всего, будет определение вашего Fight класса ,

2

Это более вероятно, будет enum, но все в порядке.

Fight Внутри будет:

enum Something 
{ 
    CLOSE, RANGE 
}; 

Fight::CLOSE Тогда и Fight::RANGE являются целочисленные константы с различными значениями.

Прочитать о enums («перечислены типы») в вашей книге на C++.

Синтаксис :: является (в этом контексте) способом доступа к статическим членам класса. Например, вы вызываете статические функции-члены, такие как Fight::someFunc().

0

Это имя, которое объявлено в классе Fight. Вероятно, он должен быть объявлен как перечисление.

struct Fight { 
    enum Status { 
     CLOSE, 
     RANGE 
    } 

    Status type; 
    //... 
} 

Перечисления экспортировать их имена (CLOSE, RANGE) в области видимости, т.е. объема класса в данном случае. При преобразовании в int, CLOSE даст 0 и RANGE даст 1. (При этом порядке объявления)

0

Это может быть одним из следующего

  1. перечисления вложенного в классе.
  2. Статический элемент данных под открытым небом.
  3. внутренний/публичный данные.
Смежные вопросы