内部にポインターの std::map を持つ構造体があります。私は次のことをしようとしています:
template <class T>
struct Foo
{
std::map<std::string, T*> f;
T& operator[](std::string s)
{
return *f[s];
}
}
そして、次のように使用します。
Foo<Bar> f;
f["key"] = new Bar();
しかし、その書き方では、プログラムがクラッシュします。私もこのように試しました:
T* operator[](std::string s)
{
return f[s];
}
しかし、コンパイルされません。"lvalue required as left operand of assignment"
ライン上で言っていf["key"] = new Bar()
ます。
ポインターを返そうとしていて、ポインターを保存しているので、簡単だと思っていました。コードの何が問題になっていますか?