Причина, по которой вы получаете это, в том, что итераторы из двух (или более) разных копий myVec. Вы возвращаете копию вектора при каждом вызове myFoo.getVec()
. Таким образом, итераторы несовместимы .
Некоторые решения:
Возвращает постоянную ссылку на std::vector<int>
:
const std::vector<int> & getVec(){return myVec;} //other stuff omitted
Другое решение, вероятно, предпочтительнее, это получить локальную копию вектора и использовать ее для получения итераторов:
const std::vector<int> myCopy = myFoo.getVec();
std::vector<int>::const_iterator i = myCopy.begin();
while(i != myCopy.end())
{
//do stuff
++i;
}
Также +1 для не using namespace std;