2016-03-01 6 views
0

У меня есть следующий код в myclass.h файла:unordered_map ошибка компиляции устанавливать

typedef std::unordered_set< int, int> Parameters; 
class MyClass 
{ 
    public: 
     void myFunction(); 
    private: 
     Parameters* m_params; 
} 

Затем туРипсЫоп выглядит следующим образом:

void MyClass::myFunction() 
{ 
    ... 
    m_params->emplace(1,1); 
} 

Когда я пытаюсь скомпилировать, я get:

термин не оценивает функцию, принимающую 1 аргумент

Если я прокомментирую emplace, ошибка исчезнет. Тем не менее, я не нашел никакого злоупотребления, связанного с этой функцией: http://en.cppreference.com/w/cpp/container/unordered_map/emplace

Любая помощь была бы высоко оценена.

+2

'std :: unordered_set! = Std :: unordered_map'. – BoBTFish

ответ

1

Простая опечатка: вы использовали std::unordered_set в своем коде, но вы имели в виду std::unordered_map.

Ваша реализация не распознает ошибку Hash до int в шаблоне std::unordered_set, пока вы не попытаетесь что-то положить в контейнер. Затем он пытается хешировать ввод, и понимает, что не может использовать int как функцию.

+0

мой плохой ... долго работающий .... Спасибо большое – omniyo

+0

Время отдохнуть! Вероятно, вы сделаете ошибку, что компилятор не спасет вас, и укусит вас в задницу позже. – BoBTFish

 Смежные вопросы

  • Нет связанных вопросов^_^