我如何访问和变异矢量C ++中存储的对象

时间:2018-10-26 15:13:56

标签: c++ object vector

所以我正在研究一个按距离和时间对驾驶员进行排序的项目。目前,我有一个重载的构造函数,它基于输入创建新对象并将其存储到向量中。然后,我还要在setName()函数中调用类中具有驱动程序名称的字符串。

稍后,我需要识别一个跳闸命令,然后从矢量中拉出对象。我用于执行此操作的代码如下。

for (vector<Driver>::iterator i = drivers.begin(); i != drivers.end(); i++) {
                Driver tempObj = *i;
                string temp = tempObj.getName();
                cout << temp << endl;
            }

下面是我的setName()和getName()代码

string Driver::getName() { return driverName; }
void Driver::setDriverName(string n) {n = driverName;}

我当前的输出是输出空行。有想法吗?

2 个答案:

答案 0 :(得分:1)

按如下所示修改您的driverName设置函数:

void Driver::setDriverName(string n) {driverName = n;}

请注意,您不能将值分配给函数的参数,并且希望了解发生的事情,除非通过引用将其传递给:-)。

答案 1 :(得分:0)

Driver 复制 Driver tempObj = *i;时,这些对象之间没有进一步的关联。在填充drivers的位置未显示的代码中,您可能会执行类似的操作。

您的setDriverName无效,它所做的只是修改立即不再存在的字符串的副本

void Driver::setDriverName(string n) {n = driverName;}

您可以引用它们,而不是复制您的Driver

for (auto & driver : drivers) {
    string name = driver.getName();
    std::cout << name << std::endl;
    driver.setName("New Name");
}