Неоднозначный вызов перегруженной функции (постоянное разнообразие) - PullRequest
0 голосов
/ 25 марта 2010

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

ошибка C2668: 'std :: _ Tree <_Traits> :: end': неоднозначный вызов перегруженной функции

Мой код выглядит так:

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 () не имеет параметров. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Из вашего кода кажется, что my_map_t::end() является статическим (в противном случае вам придется вызывать его в экземпляре, например, _test.end()). Редактировать : Джесси Бедер прав в своем комментарии к вопросу; код не имеет особого смысла, так как _test это тип, а не объект.

Статические функции-члены не могут быть квалифицированы как const (квалификация const функции-члена применяется к указателю this; статические функции-члены не имеют указателя this).

0 голосов
/ 25 марта 2010

Я не знаю, относится ли это именно к вашей проблеме, потому что мне немного непонятно, как интерпретировать вопрос, но это может помочь ...

// BindingProblem.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <map>

typedef std::map<int*, float> my_map_t;

int _tmain(int argc, _TCHAR* argv[])
{
    int iKeyValue;

    my_map_t _test;

    my_map_t::const_iterator not_found = _test.end();

    if (_test.find(&iKeyValue) == not_found)
    {
        _test[&iKeyValue] = 4 + 5; // not the actual code, but here for simplicity
    }

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