operator [] = overload?

Хорошо, я пытаюсь сделать небольшой класс, который будет работать как своего рода хеш-таблица. Если я смогу заставить его работать, тогда я смогу сделать это:

  StringHash* hash = new StringHash;
  hash["test"] = "This is a test";
  printf(hash["test"]);

И он должен распечатать «Это тест».

Похоже, у меня на данный момент 2 проблемы. Сначала я сделал следующее:

const char* operator[](const char* key) {
  for(int i = 0; i < hashSize; ++i) {
    if(strcmp(hkeys[i], key) == 0) {return values[i];}
  }
  return NULL;
}

Но когда я пытаюсь найти значение, компилятор жалуется на ошибку

: недопустимые типы `StringHash * [const char [5]] 'для индекса массива

Во-вторых, здесь оператор [] = не является правильным синтаксисом. Единственное, что я смог найти, это оператор & [] но я не думаю, что это сработает, так как мне нужно закодировать процедуру поиска ??? (Разве этот синтаксис не используется только для возврата ссылки на элемент массива?)

Это то, что я ' м пытаюсь сделать здесь хоть возможно? Любые советы приветствуются. :)


Похоже, я не понимаю, что я пытаюсь сделать. Я выложу свой код:

http://pastebin.com/5Na1Xvaz


Готовый продукт после всей помощи:

http://pastebin.com/gx4gnYy8

6
задан Khat 11 October 2010 в 17:49
поделиться