私はC++が初めてなので、noobの質問を許してください。私のプログラムでは、「従業員」オブジェクトのベクトルを参照によって関数に渡します。この関数は、ベクトル内の各オブジェクトで Employee メンバー関数を呼び出し、「給与」を「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
}