Посмотрите на оператор присваивания в setV
:
test1 = test1;
Закрытая переменная test1
скрывается за параметром функции с тем же именем, и вы назначаете этот параметр себе.
Вы должны определить setV
так:
void setV(vector<test*> const &newTest1) {
test1 = newTest1;
}
Таким образом, вы действительно присваиваете параметр закрытой переменной, а использование ссылки const
для параметра позволяет избежать ненужной временной копии.
Кроме того, вы должны определить getV
как const
и вернуть ссылку const
:
vector<test*> const &getV() const {
return test1;
}
Таким образом, он может быть вызван на const
экземпляре вашего класса, и это позволяет избежать создания ненужной копии возвращаемого значения.
(Вы также можете определить другое getV
, без const
s, если вы хотите, чтобы вызывающая сторона могла изменять вектор неконстантного экземпляра вашего класса.)