저는 C ++를 처음 사용하므로 멍청한 질문을 용서하십시오. 내 프로그램에서 "Employee"개체의 벡터를 참조로 함수에 전달합니다.이 함수는 벡터의 각 개체에 대해 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
}
참조로 벡터 를 전달 하고 있지만이 줄에서 :
Employee e = v[i];
당신이하는 복사 직원 개체를. 참조도 만드십시오.
Employee &e = v[i];
예상대로 작동합니다.
( std::vector::operator[]
대부분의 표준 컨테이너의 아래 첨자 연산자가 수행하는 것처럼 자체적으로 참조를 반환 하기 때문에 작동 합니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다