ошибка: нет соответствующей функции для вызова 'make_pair (int &, Quest *)'

Я получаю эту странную ошибку в 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 *)'

7
задан CinCout 7 April 2016 в 13:11
поделиться

2 ответа

Это работает с явным приведением типов?

if (id)
    Cache.insert(make_pair<int, Quest*>(int(*id), NULL));

Кроме того, файл cpp с 9000 строк, правда?

10
ответ дан 6 December 2019 в 06:02
поделиться

NULL не является Quest* -- он может быть определен как ((void *)0) где-то, что не может быть неявно преобразовано в Квест*. Вместо этого используйте static_cast(0).

-1
ответ дан 6 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: