У меня есть следующая проблема, связанная с итерацией по ассоциативному массиву строк, определенному с помощью std:: map.
-- snip --
class something
{
//...
private:
std::map<std::string, std::string> table;
//...
}
В конструкторе я заполняю таблицу парами строковых ключей, связанных с строковыми данными. В другом месте у меня есть метод toString, который возвращает строковый объект, содержащий все ключи и связанные с ним данные, содержащиеся в объекте таблицы (в виде ключа = формат данных).
std::string something::toString()
{
std::map<std::string, std::string>::iterator iter;
std::string* strToReturn = new std::string("");
for (iter = table.begin(); iter != table.end(); iter++) {
strToReturn->append(iter->first());
strToReturn->append('=');
strToRetunr->append(iter->second());
//....
}
//...
}
Когда я пытаюсь скомпилировать, я получаю следующее
error: "error: no match for call to" (std:: basic_string, std:: allocator > )() ".
Может кто-нибудь объяснить мне, чего не хватает, что я делаю неправильно? Я только нашел некоторое обсуждение подобной проблемы в случае hash_map, где пользователь должен определить функцию хеширования, чтобы иметь возможность использовать hash_map с объектами std::string. Может быть, что-то похожее и в моем случае?
Спасибо!