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



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

稍后,我需要识别一个 trip 命令,然后从向量中提取对象。我用来执行此操作的代码如下。

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;}

我目前的输出给了我空行作为输出。思潮?

修改驱动程序名称集函数,如下所示:

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

请注意,您不能为函数的参数赋值并希望了解正在发生的事情,除非通过引用传入:-(。

当你Driver tempObj = *i;复制一个Driver,这些对象之间没有进一步的关联。在未显示填充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");
}

最新更新