を使用して定義された文字列の連想配列の反復に関連する次の問題がありますstd::map
。
-- snip --
class something
{
//...
private:
std::map<std::string, std::string> table;
//...
}
コンストラクターでは、文字列データに関連付けられた文字列キーのペアをテーブルに入力します。他の場所にtoString
、テーブルオブジェクトに含まれるすべてのキーと関連データを含む文字列オブジェクトを返すメソッドがあります(key = data形式として)。
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<char,
std::char_traits<char>, std::allocator<char> >) ()’".
誰かが私に何が欠けているのか、私が間違っているのかを説明してもらえますか?ユーザーがオブジェクトhash_map
で使用できるようにハッシュ関数を定義する必要がある場合に、同様の問題についての議論をいくつか見つけました。私の場合も似たようなものでしょうか?hash_map
std::string