我从类中创建了一些对象,并将默认值设置为其属性。然后我将相同的对象属性值更改为不同的值。但是该更新在输出中对我不起作用。
(?=)
以上是主要的方法代码。通过第一个Container* container = TestValueInventor::getContainer();
container->print();
std::vector<ContainerEntry> cont_entry_vector = container->getContainerEntries();
for (vector<ContainerEntry>::iterator it = cont_entry_vector.begin(); it != cont_entry_vector.end(); it++) {
it->updateAmount(6.0);
}
cout << "After the update...." << endl;
container->print();
int pause;
cin >> pause;
return 0;
,它将显示默认值。然后在第二个print()
之后应该打印更新的值。但它仍然显示默认值。我试图通过引用概念添加传递。但是不适用于此。
print()
上面的代码是主要方法中Container * TestValueInventor::getContainer(){
ContainerEntry row1;
row1.setAmount(10);
ContainerEntry row2;
row2.setAmount(50);
Container* container = new Container();
container->addContainerEntry(row1);
container->addContainerEntry(row2);
return container;
}
静态方法的实现。
getContainer()
以上代码是在终端中打印输出。在main函数内部有两个打印函数,因为第一个是打印默认值,第二个是打印更新的值。两个输出都是相同的,这是客户端的问题。
void Container::print(){
for (ContainerEntry &row : containerRecord) {
cout << "value:- " << row.getAmount() << endl;
}
}
以上是std::vector<ContainerEntry> Container::getContainerEntries()
{
return this->containerRecord;
}
方法的实现。
getContainerEntries()
以上是将默认金额更新为6.0。
然后最后它不会打印6.0而不是先前分配的默认值。那么我怎么能让它正确呢?
答案 0 :(得分:5)
Container::getContainerEntries
函数返回向量的副本。它应该返回引用:
std::vector<ContainerEntry>& Container::getContainerEntries() { ... }
当然,您需要将其指定给参考,否则您需要再次复制:
std::vector<ContainerEntry>& cont_entry_vector = container->getContainerEntries();