Инициализатор массива C ++ Использование типа enum - PullRequest
3 голосов
/ 07 августа 2011
class ARouter {
    enum directions {north, neast, east, seast, south, swest, west, nwest};
    static directions gon[] = {north, neast, nwest, east, west, seast, swest, south};
};

Привет, кто-нибудь знает, что случилось с приведенным выше кодом?

Я получаю 2 ошибки для второй строки из VC ++ 2008Ex:

ошибка C2059: синтаксическая ошибка: '{'

ошибка C2334: неожиданный токен (ы), предшествующий '{';пропуск видимой функции тела

1 Ответ

5 голосов
/ 07 августа 2011

Вы не можете определить переменную внутри такого класса.

Это должно быть что-то вроде:

class ARouter {
    enum directions {north, neast, east, seast, south, swest, west, nwest};
    static directions gon[];
};

ARouter::directions ARouter::gon[] = {north, neast, nwest, east, west, seast, swest, south};

Объявление идет в теле класса; определение живет снаружи. Обратите внимание, что вы обычно помещаете тело класса в заголовок, а определение - в исходный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...