更新矢量中的对象属性

Updating an Object's property in a Vector

本文关键字:对象 属性 更新      更新时间:2023-10-16

我有一个包含对象的向量。对象有一个名为first name的属性。我想更新属性中的第一个名字,为了做到这一点,我必须传递对象保存的向量,唯一标识每个对象的人员编号,最后是从用户输入中获取的新名称。

我的问题是它显示了我用来设置新名称的循环中的更新名称,但如果我使用第二个循环或新循环并再次迭代向量,则不保存新名称,但显示旧名称。

这是我所做的:-

public: void updateFirstName(vector<Administrator> vectorUpdate,string staffNumber,string newName)
{
    FileHandler<Administrator> adminTObj;
    for(Administrator iter: vectorUpdate)
    {
    if(iter.getStaffNumber()==staffNumber)
        {
        iter.setFirstName(newName);
        cout<<"Update"<<endl;
        cout<<iter.getFirstName()<<endl;
                    //here it prints the updated name but if i use a different loop 
                   //and iterate through the vector the new name is not saved.
        }
    }   
}

这里有什么问题吗?谢谢你

按值传递向量

void updateFirstName(vector<Administrator> vectorUpdate,
                                        string staffNumber,string newName)

所以每次你调用这个函数时,你都会把原来的向量复制到它里面,然后在函数里面处理这个复制的向量。这样做的结果是对函数内部的局部变量进行了更改。相反,你想通过引用传递vector:

void updateFirstName( vector<Administrator> &vectorUpdate,
                                        string staffNumber,string newName)

在函数体中,这里

for( Administrator iter: vectorUpdate)

你也会经历同样的事情。你想写:

for( Administrator& iter: vectorUpdate)