Компиляция проблем, связанных с map.find и инициализацией - PullRequest
0 голосов
/ 16 марта 2011

Я написал класс на С ++ с именем «Синхронизация». Затем я создал карту, содержащую объекты Sync, связанные с syncID num, следующим образом:

map<int, Sync*> _syncList;

В одном из моих методов я пытаюсь найти существующий объект Sync на моей карте в соответствии с заданным номером syncID следующим образом:

Sync* currS = *(_syncList.find(sync_id))->second;

Я думал, что это будет аккуратно, но потом компилятор пожаловался на это:

error: cannot convert ‘Sync’ to ‘Sync*’ in initialization

Что я могу сделать, чтобы исправить это правильно?

1 Ответ

3 голосов
/ 16 марта 2011

Две вещи:

  1. Избавиться от звездочки: Sync* currS = _syncList.find(sync_id)->second;
  2. Убедитесь, что find() действительно находит элемент (иначе вам нужно проверить возвращаемое значение find() для map<...>::end).
...