为什么我的对象无法修改它自己的对象向量?

时间:2016-12-17 15:00:48

标签: c++ stdvector

我有一个“CConfiguration”类,它有一个CConfigSection对象的受保护矢量。我正在尝试在CConfiguration中实现一个方法(“testFn1”),它将迭代所有CConfigSection对象并修改每个对象的名称。如果我从testFn1()中打印出修改后的名称,我会验证该名称是否已正确修改。但是当我从main.cpp调用testFn1()后打印出名称时,名称不会被修改,它仍然是原始名称。因此,我似乎只修改了对象的副本而不是对象本身,但我不明白为什么或如何修复它。

代码如下......还有更多的代码,但我试图将所有内容归结为相关部分。

谢谢!

Configuration.h:

class CConfiguration
{
public:
    CConfiguration();
    ~CConfiguration(void);

    CStatus testFn1(void);
    vector<CConfigSection> getSections(void) { return sections; }

protected:
    vector<CConfigSection> sections;
};

Configuration.cpp:

// Modify the name of each CConfigSection object in the vector
CStatus CConfiguration::testFn1(void) {  
for (int II = 0; II < sections.size(); II++) {
    sections[II].name = sections[II].name + "_ABC";
}
return CStatus::OK();

}

main.cpp中:

vector<CConfigSection> sections = config.getSections(); // Get copy of sections
for (int II = 0; II < sections.size(); II++) {
    cout << "main: Name Before = " << sections[II].name << endl;
}

config.testFn1(); // Update name of all sections

sections = config.getSections(); // Get updated copy of sections w/ new name
for (int II = 0; II < sections.size(); II++) {
    cout << "main: Name After = " << sections[II].name << endl;
}

0 个答案:

没有答案