У меня есть структура с указателем 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"
.
Я ожидал, что это будет легко, поскольку я пытаюсь вернуть указатель и храню указатель.Что не так с моим кодом?