0
我写了一个不可变类Coords,只有两个成员 - const int x和const int y。但是,编译器希望我编写一个赋值运算符,从我所能收集的内容来看,它对于不可变类型是没有意义的。这里有一个例子:我如何避免为我的不可变类写作业操作符
//location is a Coords* and Coords::DOWN is a static const Coords&.
Coords& next = Coords(location);
next = next + Coords::DOWN;
智能感知不喜欢使用“=”在第3行我想,这个问题是我已经分配的内存“下一步”,所以,当我要更换用别的东西记在那个记忆里,它不喜欢那样。我对么?我怎样才能解决这个问题?
谢谢!
如果你的类型是“不可变的”,你会如何期待这个* mutating *操作起作用? –
'Coords(location)'创建一个临时的(你有一个悬挂引用),并且你不重新分配给一个引用,你分配给引用的'Coords'对象。 – LogicStuff
“* Intellisense不喜欢在第3行中使用'='。*”它不应该喜欢第2行,但这是一个长期存在的VC++编译器错误,他们不太可能修复。 –