【发布时间】:2020-07-15 22:05:15
【问题描述】:
我正在尝试更改数组内对象的参数,但是当我将它传递给函数时,它似乎正在创建一个新参数。
我已经看到类似的问题和答案,例如this one,但这对我不起作用,因为我在最终代码中没有固定的数组大小。
我创建了一个非常简短的代码版本来显示问题。
#include <iostream>
using namespace std;
class Vect {
public:
Vect(int x, int y)
{
_x = x;
_y = y;
}
int _x;
int _y;
};
void ChangeX(Vect tests[], int size)
{
for (int i = 0; i < size; i++) {
tests[i]._x = 39;
}
}
int main()
{
Vect v1 = Vect(1,2);
Vect v2 = Vect(6,3);
cout << "Initial X: ";
cout << v1._x;
cout << "\n";
Vect vectors[2] = { v1, v2 };
cout << "Final X: ";
ChangeX(vectors, 2);
cout << v1._x;
return 0;
}
我希望输出是:
Initial X: 1
Final X: 39
但实际上是:
Initial X: 1
Final X: 1
另外,目前使用 C++ 向量不是解决方案。我的程序内存使用率很低,用于额外代码的空间非常小。
【问题讨论】:
-
ChangeX(vectors, 2);-- 您正在更改vectors,而不是v1或v2。改为打印vectors[0]._x。 -
不相关:潜在的术语问题
Vect看起来更像是一个点而不是一个向量。
标签: c++ arrays arduino arduino-c++