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();