Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么SET不能改变C++中的值?_C++ - Fatal编程技术网

为什么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,因为它们表示不一定存在的方向或方位。