C++ 更新对象内部的值不';行不通

C++ 更新对象内部的值不';行不通,c++,C++,我从类中创建了一些对象,并将默认值设置为其属性。然后我将相同的对象属性值更改为不同的值。但是这个更新在输出中对我不起作用 Container* container = TestValueInventor::getContainer(); container->print(); std::vector<ContainerEntry> cont_entry_vector = container->getContainerEntries(); for (vector<

我从类中创建了一些对象,并将默认值设置为其属性。然后我将相同的对象属性值更改为不同的值。但是这个更新在输出中对我不起作用

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;
上面的代码是主方法中的
getContainer()
static方法的实现

void Container::print(){
 for (ContainerEntry &row : containerRecord) {
    cout << "value:- " << row.getAmount() <<  endl;
 }                                                                           
}
以上是将默认金额更新为6.0


最后,它将不会打印6.0,而是先前指定的默认值。那么我如何才能使它正确呢?

函数返回向量的副本。它应该返回一个引用:

std::vector&Container::getContainerEntries(){…}
当然,您需要将其分配给引用,否则您将再次复制:

std::vector<ContainerEntry>& cont_entry_vector = container->getContainerEntries();
std::vector&cont_entry_vector=container->getContainerEntries();

getContainerEntries返回此文件的副本->containerRecord,cont_entry_vector是getContainerEntries返回的任何文件的副本。
std::vector<ContainerEntry> Container::getContainerEntries()
{
  return this->containerRecord;
}
void ContainerEntry::updateAmount(double amo)
{
  this->amount = amo;
}
std::vector<ContainerEntry>& Container::getContainerEntries() { ... }
std::vector<ContainerEntry>& cont_entry_vector = container->getContainerEntries();