возвращение перечисления из функции в базовом классе C ++ - PullRequest
2 голосов
/ 09 апреля 2011

Я наткнулся на следующий код,

class Handler
{
public:
   Handler() {}
   ~Handler() {}

    enum HANDLER_PRIORITY {PRIORITY_0, PRIORITY_1, PRIORITY_2};

    virtual HANDLER_PRIORITY GetPriority();
private:
    HANDLER_PRIORITY m_priority;
}

в файле .cpp. У меня это

HANDLER_PRIORITY Handler::GetPrioity()
{
   return PRIORITY_0;
}

Я получаю ошибку компиляции, "отсутствует спецификатор типа - предполагается, что int.Примечание: C ++ не поддерживает default-int "

Я знаю, что unlinke C, C ++ не поддерживает возвращение default-int.но почему бы ему не распознать возвращаемый тип enum.Это прекрасно работает, если я заменю тип возвращаемого значения из HANDLER_PRIORITY на int / void, ИЛИ если я определю метод в самом классе.(встроенный) ИЛИ измените тип возвращаемого значения на Handler :: HANDLER_PRIORITY.

Я на VS 2008.

1 Ответ

21 голосов
/ 09 апреля 2011

Вам нужно

Handler::HANDLER_PRIORITY Handler::GetPriority()
{
...
}

Редактировать: Извините, не увидел остальную часть вашего сообщения.Что касается того, почему это так, HANDLER_PRIORTY не имеет глобальной области видимости.Это член Handler не меньше, чем любой другой.Поэтому, конечно, вы должны указать компилятору, где он находится, т.е. использовать Handler::.

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