У меня есть класс (foo), который содержит вектор.
Если я попробую перебрать элементы в векторе, вот так:
for(vector<random>::iterator it = foo.getVector().begin();
it != foo.getVector().end(); ++it) {
cout << (*it) << endl;
}
Первый элемент всегда поврежден и возвращает данные мусора.
Однако, если сделать что-то вроде:
vector<random> v = foo.getVector();
for(vector<random>::iterator it = v.begin();
it != v.end(); ++it) {
cout << (*it) << endl;
}
Кажется, все работает нормально. Есть ли "гоча", о которой я не знаю?
Я также пытался сделать cout << foo.getVector () [0] << endl; за пределами цикла, но, похоже, работает нормально. </p>
Спасибо.
Edit:
Вот мой заголовочный файл:
#ifndef HITS
#define HITS
#include <vector>
#include "wrappers.h"
class Hits {
public:
Hits();
std::vector<word_idx_value> getVector() {return speech_hits;}
const std::vector<word_idx_value> getVector() const {return speech_hits;}
void add(const word_idx_value&);
Hits &operator+=(const Hits&);
private:
std::vector<word_idx_value> speech_hits;
};
#endif