Я получаю эту странную ошибку в g ++; он прекрасно компилируется в Visual Studio.
struct Quest
{
static map<int, Quest*> Cache;
};
Quest *Quest::LoadFromDb(BaseResult& result, int *id)
{
Quest *ret;
if(result.Error())
{
if(id)
Cache.insert(make_pair<int, Quest*>(*id, NULL)); // <--- Problematic line
return NULL;
}
// ...
}
Точная ошибка:
DataFilesStructure.cpp: 9135: 58: ошибка: нет соответствующей функции для вызов 'make_pair (int &, Quest *)'
Это работает с явным приведением типов?
if (id)
Cache.insert(make_pair<int, Quest*>(int(*id), NULL));
Кроме того, файл cpp с 9000 строк, правда?
NULL
не является Quest*
-- он может быть определен как ((void *)0) где-то, что не может быть неявно преобразовано в Квест*
. Вместо этого используйте static_cast
.