我有一个示例Map类,我试图覆盖下标运算符。允许类的用户读取和写入Map。 正在读取Map [“a”],并且Map [“a”] =“something”是该类的写入。但是,我无法弄清楚如何使用赋值运算符方面的东西,并允许传入值来替换它。现在,如果我尝试分配一个新值,它只是读取“分段错误”
这是我到目前为止所做的:
rev-parse
现在我没有任何代码..只是想看到它们会被成功调用。
我似乎无法弄明白的是,如果我做了
这样的事情$ git rev-parse --symbolic-full-name target@{u}
fatal: no upstream configured for branch 'target'
我会遇到分段错误。我假设当我想为特定键分配新值时,将调用赋值运算符=。难道我做错了什么?
顺便说一句,VALUE_TYPE和KEY_TYPE只是定义为字符串,每个键都有一个与之关联的值。
答案 0 :(得分:3)
您不是要分配给地图,而是分配给operator[]
返回的对象
(在m["a"] = "hey";
中,m["a"]
不是Map
,而是VALUE_TYPE&
。)
运算符需要返回对有效对象的引用,否则行为未定义。
我能想到的最小的例子:
struct Mapp
{
int& operator[](int i) { return member; }
int member;
};
int main()
{
Mapp m;
m[0] = 12; // Assigns 12 to m.member
}
您还想重载运算符的const版本。