我有以下课程:
class Manifest {
public:
Manifest(void);
~Manifest(void);
std::vector<ManifestDirectory> get_directories() const { return directories_; }
void set_directories(std::vector<ManifestDirectory> dirs) { directories_ = dirs; }
int ReadManifest(Manifest &manifest);
private:
std::vector<ManifestDirectory> directories_;
};
以及简化用法:
Manifest manifest;
manifest.ReadManifest(manifest);
for (std::vector<ManifestDirectory>::iterator it = manifest.get_directories().begin(); it != manifest.get_directories().end(); ++it) {
// Do something
}
如何修改get_directories()
,因此它不会复制整个directories_
和it
for for循环将指向相同的directories_.begin()?
现在迭代器是不兼容的。
答案 0 :(得分:0)
如果您不希望在get_directories()
之外修改目录,请返回const ref:
const std::vector<ManifestDirectory>& get_directories() const { return directories_; }
但请确保创建const迭代器。