Как исправить эту ошибку?Неоднозначный вызов перегруженной функции (сост. Сорт)
ошибка C2668: 'станд :: _ Tree < _Traits> :: Конец': неоднозначный вызов перегруженной функции
Мой код выглядит следующим образом:
typedef map<int const *, float> my_map_t;
my_map_t _test;
my_map_t::const_iterator not_found = my_map_t::end();
if (_test.find(&iKeyValue) == not_found) {
_test[iKeyValue] = 4 + 5; // not the actual code, but here for simplicity
}
Компилятор жалуется, что есть неоднозначный вызов my_map_t :: end(). Это имеет смысл, поскольку единственная разница - это тип возврата.
Обычно вы можете устранить неоднозначность вызова, выполнив параметры, но end() не имеет параметров. Есть идеи?
Он похож ' _test' - это тип, а не экземпляр (вы его typedef!). Кроме того, что такое 'my_map_t'? Требуются ли шаблонные параметры (в этом случае 'my_map_t :: const_iterator' не имеет смысла) или нет (в этом случае ваш' typedef' неверен)? –
Вы правы. Я набрал этот фрагмент в спешке. Я исправился, так что теперь это имеет смысл. Я оставил my_map_t :: end() там, чтобы показать, где мое мышление было неправильным. – Joe
Как мы должны отвечать на ваши вопросы, когда вы не публикуете свой фактический код? Не «набирайте фрагменты в спешке». Не набирайте фрагменты * вообще *. Покажите нам свой * фактический * код, или код, который вы подтвердили, содержит ту же проблему. Код, который вводит новые ошибки, опечатки и ошибки, затрудняет нам определять, какие из ошибок мы должны сосредоточить. – jalf