У меня есть вектор в качестве члена класса "B". У него есть свои функции set и get:
setVector(vector<A*>)
getVector()
Я заинтересован в заполнении этого вектора другой функцией, которая использует объект этого класса "B". Поэтому я создал новые объекты класса «A» и сделал следующее, чтобы по ошибке обновить векторную переменную-член класса «B»:
A* obj = new A;
B b;
B.getVector().push_back(obj);
Произошло то, что push_back не работал. Другими словами, когда я пытаюсь увидеть переменную-член с помощью отладчика, я вижу, что векторная переменная-член по-прежнему имеет емкость 0, как будто я ничего не нажимаю на нее.
Я попытался изменить свою реализацию на:
vector<A*> tempVector;
B b;
A* obj = new A;
tempVector.push_back(obj);
b.setVector(tempVector);
И это сработало, как и ожидалось.
Я хотел понять, почему это первое поведение было ошибкой? Как я понимаю конструктор класса B должен создавать вектор по умолчанию. Поэтому, когда я использую функцию getVector (), она должна вернуть мне созданный вектор, а затем я могу нажать на него. Вот я и хотел узнать, что я не так сделал в этой ситуации?