为什么SET不能改变C++中的值?
打印以下代码:为什么SET不能改变C++中的值?,c++,C++,打印以下代码: 2 1 而不是 2 2 为什么我的setter没有调整值 主要的 camera.cpp get_location返回原始对象的副本。因此,set_y确实会修改y,但它会修改原始位置的副本。如果您希望上述内容按预期工作,请返回参考: 功能主体将与之前相同: Vector& Camera::get_location() { return location; } 现在它将按照您预期的方式工作 您可以将代码编写为: Vector & location = came
2
1
而不是
2
2
为什么我的setter没有调整值
主要的
camera.cpp
get_location返回原始对象的副本。因此,set_y确实会修改y,但它会修改原始位置的副本。如果您希望上述内容按预期工作,请返回参考:
功能主体将与之前相同:
Vector& Camera::get_location() { return location; }
现在它将按照您预期的方式工作
您可以将代码编写为:
Vector & location = camera.get_location(); //save the reference
location.set_y(location.get_y() + 1);
它修改摄影机的位置对象
将上述代码与此代码进行比较:
Vector location = camera.get_location(); //save the copy!
location.set_y(location.get_y() + 1);
它不会修改相机的位置对象!它修改的是副本,而不是原件
希望有帮助
camera.get_location().set_y(location.get_y() + 1);
get_location返回原始对象的副本。因此,set_y确实会修改y,但它会修改原始位置的副本。如果您希望上述内容按预期工作,请返回参考:
功能主体将与之前相同:
Vector& Camera::get_location() { return location; }
现在它将按照您预期的方式工作
您可以将代码编写为:
Vector & location = camera.get_location(); //save the reference
location.set_y(location.get_y() + 1);
它修改摄影机的位置对象
将上述代码与此代码进行比较:
Vector location = camera.get_location(); //save the copy!
location.set_y(location.get_y() + 1);
它不会修改相机的位置对象!它修改的是副本,而不是原件
希望有帮助
camera.get_location().set_y(location.get_y() + 1);
正在设置临时向量的y,而不是修改摄影机的向量
你必须这样做:
Vector new_vector = camera.get_location;
new_vector.set_y(location.get_y() + 1);
camera.set_location(new_vector)
更好的办法是避免使用getter和setter
正在设置临时向量的y,而不是修改摄影机的向量
你必须这样做:
Vector new_vector = camera.get_location;
new_vector.set_y(location.get_y() + 1);
camera.set_location(new_vector)
更好的方法是避免使用getter和setter。getter摄影机::get\u位置返回向量对象。这最终是其成员变量的副本。因此,对此的任何更改都不会修改相机中包含的矢量
如果您希望它是可修改的,您应该将其更改为返回向量和引用。您的getter Camera::get_位置返回向量对象。这最终是其成员变量的副本。因此,对此的任何更改都不会修改相机中包含的矢量
如果您希望它是可修改的,您应该将其更改为返回向量和参考。Ha!谢谢我还在习惯这些东西。哈!谢谢我仍然习惯于这些事情。我有一些反对将变量公开/保护的论点,我不能使用像camera.moveLeft或camera.moveWest这样的函数,因为这些函数意味着一个方向或方向,但不一定存在。我有一些反对将变量公开/保护的论点,我不能使用像camera.moveLeft或camera.moveWest这样的函数camera.moveLeft或camera.moveWest,因为它们表示不一定存在的方向或方位。