2016-03-17 3 views
0

Итак, у меня есть класс с именем «Игрок», в файле заголовка у меня есть это:C++ перечисление параметров дает ошибку идентификатор

class Player 
{ 
public: 
    void move(Player::Direction direction); 

private: 
    enum Direction { LEFT, RIGHT, UP, DOWN }; 
}; 

И в файле CPP у меня есть это:

void Player::move(Player::Direction direction) 
{ 

} 

Теперь моя проблема заключается в том, что intellisense говорит, что нет такого члена как направление с классом в заголовке, но в файле cpp сказано, что оно действительно. При компиляции я получаю ошибку: «ошибка C2061: синтаксическая ошибка: идентификатор« Направление »

+0

Содержит ли ваш код? _Intellisense_ не является надежным до тех пор, пока индекс не пройдет. –

+0

Просто переместите объявление перечисления над объявлением функции. Это C++ черт возьми! (не злой) –

+0

Я только что протестировал это, работает безупречно, если вы переместите Enum поверх класса. –

ответ

1

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

Своп объявления. (Кроме того, Player:: является избыточным.)

class Player 
{ 
private: 
    enum Direction { LEFT, RIGHT, UP, DOWN }; 

public: 
    void move(Player::Direction direction);  
};