如何访问和改变存储在矢量C++中的对象
How can I access and mutate objects stored in a vector 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");
}
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象