2011-01-27 3 views
0

Ive получил установку станд :: карту, как это:C++ станд :: Индекс карты переменной

static map<string, string> games; 

Внутри для контура им пытаются присвоить переменной значение индекса, как так

games[name] = "Yes!"; 

, но это просто дает мне ошибку

136: error: no match for operator[] in games[name] 
+5

Каков тип переменной 'name'? – vz0

+1

, давайте сделаем глупый материал, вы включили '' и где-то вы указали' using std :: map; ', и просто чтобы проверить еще одну вещь, вы не объявили' игры', поскольку какой-то другой тип рядом с циклом for? – Nim

+1

Doh, вы были правы, я использовал игры внутри цикла, когда это была игра. Моя ошибка в использовании глупых имен переменных, спасибо. – Jack

ответ

4

Есть две возможных причины этой ошибки:

  1. Переменная games не является std::map экземпляра.
  2. Переменная name не является экземпляром std::string.

Кроме того, проверьте, нет ли столкновений имен.

0

это потому, что 136 не является String, а целое значение. Определенная вами карта допускает только строковые ключи и только строковые значения.

http://www.sgi.com/tech/stl/Map.html

+9

Это, вероятно, номер строки, где находится ошибка. – mkb

+0

ОК .. это было до первого кофе в день. Извините: p – geekazoid

0

name не является переменной строкой, поэтому он не может найти соответствующий оператор [] - единственный из присутствующих ожидает параметр строки.

Оператор карты [] ожидает ключевое значение в [] - то, что вы определили как строку.

Вы можете подделать целочисленный индекс, используя операции итератора.

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