Использование параметра enum в функциях - PullRequest
2 голосов
/ 19 марта 2012

Я работаю в Windows, в C ++ с Visual Studio.

У меня есть класс, который имеет:

enum algorithmStatus { LOADING, DETECTION, TRACKING, LOST };

В объявлении я хочу использовать установщик и получательчтобы изменить статус, что-то вроде:

void MyStatusClass::setAlgorithmStatus(algorithmStatus newStatus)
{
    //_Status = newStatus;
    //_Status = MyStatusClass::algorithmStatus::LOADING;
}

Но я не могу скомпилировать, потому что я получаю:

Ошибка 5 ошибка C2511: 'void MyStatusClass :: setAlgorithmStatus (MyStatusClass::gorithStatus) ': перегруженная функция-член не найдена в' Nft_Status 'c: \ MyStatusClass.cpp 197

Как правильно настроить этот метод установки?

РЕДАКТИРОВАТЬ:

В заголовке уже объявлено:

    void setAlgorithmStatus(MyStatusClass::algorithmStatus newStatus);

и:

void setAlgorithmStatus(algorithmStatus newStatus);

В cpp функция объявлена ​​просто я пишу сверху.

решено

Проблема была в том, что я использовал MyStatusClass ::gorithStatus в конструкторе, вам не нужно использовать MyStatusClass ::, и его рекомендуется не использовать, еслитебе это не нужно.

1 Ответ

4 голосов
/ 19 марта 2012

Документация MSDN для код ошибки C2511 дает хороший список для поиска:

identifier: перегруженная функция-член не найдена вclass

Не указана версия функции с указанными параметрами.Возможные причины:

  1. В функцию переданы неверные параметры.
  2. Параметры переданы в неправильном порядке.
  3. Неправильное написание имен параметров.

Всегда ищите коды ошибок, чтобы получить помощь в устранении ошибок компиляции.

...