1
私は、内部にポインタの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];
}
しかし、それはコンパイルされません。 f["key"] = new Bar()
行には"lvalue required as left operand of assignment"
と表示されています。
私はポインタを返そうとしているのでポインタが格納されているので、それは簡単だと思っていました。私のコードで何が間違っていますか?
なぜ 'のstd ::文字列S'?どうして 'std :: string const&s'ですか? – Nawaz
@Nawazはそれを捕まえていませんでした。 –
operator [] – Ajay