通过引用将向量传递给函数,但更改不会';不坚持 我是C++新手,请原谅NOOB问题。在我的程序中,我通过引用将“Employee”对象的向量传递给一个函数,该函数对向量中的每个对象调用Employee成员函数,以将“salary”提高“r”个百分点(在本例中为2%)。我已经通过记录调用验证了这一点(工资在函数中更改),但更改不会持续……当我再次打印Employee对象时,工资保持不变。谢谢你的帮助 // main.cpp void raiseAllBy2Percent(vector<Employee> &v) { for (int i = 0; i < v.size(); i++) { Employee e = v[i]; e.salaryRaise(2); } } // Employee.cpp void Employee::salaryRaise(double r) { cout << "**salaryRaise called"; _salary += (r/100 * _salary); cout << "**new salary: " << _salary; // This logs with the change as expected } //main.cpp 无效上升百分比2(向量和v) { 对于(int i=0;i

通过引用将向量传递给函数,但更改不会';不坚持 我是C++新手,请原谅NOOB问题。在我的程序中,我通过引用将“Employee”对象的向量传递给一个函数,该函数对向量中的每个对象调用Employee成员函数,以将“salary”提高“r”个百分点(在本例中为2%)。我已经通过记录调用验证了这一点(工资在函数中更改),但更改不会持续……当我再次打印Employee对象时,工资保持不变。谢谢你的帮助 // main.cpp void raiseAllBy2Percent(vector<Employee> &v) { for (int i = 0; i < v.size(); i++) { Employee e = v[i]; e.salaryRaise(2); } } // Employee.cpp void Employee::salaryRaise(double r) { cout << "**salaryRaise called"; _salary += (r/100 * _salary); cout << "**new salary: " << _salary; // This logs with the change as expected } //main.cpp 无效上升百分比2(向量和v) { 对于(int i=0;i,c++,vector,pass-by-reference,C++,Vector,Pass By Reference,您没有更改向量内容。而是将其分配给另一个新的Employee对象e,并修改该对象: Employee e = v[i]; e.salaryRaise(2); 将此更改为: v[i].salaryRaise(2); 这将修改向量中的元素。您正在此处复制向量中的元素: Employee e = v[i]; // e is a copy of v[i] 你可能是说 v[i].salaryRaise(2); 通过引用传递向量,但在此行: Employee e = v[i]; 您正在复制empl

您没有更改向量内容。而是将其分配给另一个新的
Employee
对象
e
,并修改该对象:

Employee e = v[i];
e.salaryRaise(2);
将此更改为:

v[i].salaryRaise(2);

这将修改向量中的元素。

您正在此处复制向量中的元素:

Employee e = v[i]; // e is a copy of v[i]
你可能是说

v[i].salaryRaise(2);
通过引用传递向量,但在此行:

Employee e = v[i];
您正在复制employee对象。也将其作为引用:

Employee &e = v[i];
它将按预期运行


(请注意,这只适用于
std::vector::operator[]
本身返回一个引用,就像大多数标准容器的下标操作符一样。)

好的,我怀疑这是一个简单的解决方法。制作“Employee”的本地副本当然是个问题。我希望我可以将多个答案标记为已接受…但你们都得到了投票。谢谢!!!