对不起,首先是英语不好。我尝试搜索+ - 类似的麻烦但找不到。
我尝试减少示例以提高可读性。感谢帮助。
麻烦:我有3个班级(“房间”,“盒子”,“球”)……
改变这个
Box getBox(int var) { return boxList[var]; }
对此
Box& getBox(int var) { return boxList[var]; }
您的版本不会在房间中返回一个框,它会返回一个 的 复制 强> 在房间里的盒子。所以你不是把你的球添加到房间里的盒子里,只是放在房间里的盒子里。原始框保持不变。
我的版本返回一个 参考 到原始框,所以当你添加一个球时,你将添加到正确的框中。
你也应该改变这个
Ball getBall(int var) { return ballList[var]; }
Ball& getBall(int var) { return ballList[var]; }
出于同样的原因。
你也应该删除这些
Ball getThis() { return *this; } Box getThis() { return *this; }
因为它们没有用处。
在这一行:
您正在创建该框的副本。向副本添加元素不会更改原始元素。继续关注您的教程,直到引入引用,这应该给你一个提示。