Возвращает enum из функции-члена - PullRequest
3 голосов
/ 17 декабря 2011

Я хочу дополнить функцию, которая возвращает enum:

class myClass{
    private:
    res _res;
    public:
    enum res{ok,fail};
    res getRes()
    bool checkRes(res r);
    //other function that change _res value
    }

Эта реализация генерирует ошибку компиляции:

res myClass::getRes(){return _res;}

Но все в порядке:

myClass::res myClass::getRes(){return _res;}

Почему тип возвращаемого значения enum должен быть указан областью действия, тогда как в качестве аргумента тип области видимости для enum не обязателен - все работает нормально:

 bool myClass::checkRes(res r){
     if (_res == r){retun true;}
     else {return false;} }

1 Ответ

7 голосов
/ 17 декабря 2011

Поскольку возвращаемый тип не входит в лексическую область класса.Если у вас есть компилятор с поддержкой C ++ 11, который поддерживает его, используйте конечный тип возвращаемого значения (также называемый типом с поздним указанием):

auto myClass::getRest() -> res{ return _res; }

Часть после -> (фактически, даже параметр)list) уже относится к лексической области применения класса, так как такие квалификации не требуются.

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