-1
У меня есть следующий класс:Почему итераторы несовместимы?
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
в течение цикла будет указывать тот же directories_.begin()?
В настоящее время итератор несовместим сбрасывается.
Возврат ссылки 'std :: vector & get_directories() const {return directories_; } ' –
@RogerRowland Может быть, я должен сделать directories_ указателем и изменить get & set? Конечно, возвращение справки теперь работает - спасибо. – PawelZ
Что делать, если я не хочу, чтобы 'directories_' изменен снаружи, и только' ReadManifest() 'сможет это сделать и методы' Manifest'? – PawelZ