C++ Unordered_Map: ошибка получения: ожидаемый неквалифицированный идентификатор перед токеном «[» при компиляции

У меня есть unordered_map (на С++), который связывает int с объектом класса Item. Я инициализирую свою неупорядоченную карту в начале файла как таковую:

#include <iostream>
#include <unordered_map>
using namespace std;
typedef std::unordered_map<int, Item> MyList;

С тех пор всякий раз, когда я пытаюсь использовать MyList, например:

Item item1;
MyList[12] = item1;

Я получаю сообщение об ошибке в указанной строке: "ошибка: ожидаемый неквалифицированный идентификатор перед токеном ["" при компиляции в терминале. Есть идеи, что может быть не так? Ниже приведен другой пример того, как я использую его и получаю ту же или аналогичную ошибку.

void itemManager::removeItem(int x)  {
    MyList.erase(x);
}

Выдает: «ошибка: ожидаемое первичное выражение перед токеном ‘.’»

Пожалуйста и спасибо за помощь.


person Ruben Martinez Jr.    schedule 29.06.2012    source источник
comment
MyList[12] эквивалентно выражению std::unordered_map<int, Item>[12].   -  person Jesse Good    schedule 29.06.2012


Ответы (1)


MyList является типом:

typedef std::unordered_map<int, Item> MyList;

но вы используете его как объект:

MyList[12] = item1;

Возможно, размещение typedef было ошибкой.

person Vaughn Cato    schedule 29.06.2012