У меня возникли некоторые трудности при передаче ссылки на вектор в качестве аргумента. Первоначально это был указатель на вектор указателей, и вызываемые функции изменяли атрибуты объекта, который его вызывал. Например я использовал:
(*myVector)[i]->myFunction();
и все работало отлично. myFunction () будет переводить любой объект, который был текущим индексом myVector.
Теперь я изменил вектор, чтобы он содержал набор объектов вместо указателей на объекты, как это было изначально. Вместо того, чтобы передавать указатель на вектор, я передаю ссылку на него. Я получаю доступ к функции следующим образом:
myVector[i].myFunction();
Он компилируется, я обнаружил, что myFunction () больше не дает такие же результаты, как раньше. Я использовал точку останова и увидел, что она изменяет атрибуты, как и должно быть, однако эти изменения никогда не вносились в исходный объект. Окончательного перевода не было, хотя точка останова показала, что происхождение myVector [i] изменилось.
Я попытался передать указатель на вектор объектов и использовал:
(*myVector)[i].myFunction();
и то же самое, оно скомпилировано, но не работает.
Наконец, я попытался просто передать ссылку на первый объект в векторе, и, конечно, это сработало просто:
myObject.myFunction();
Есть ли какая-то внутренняя вещь, которую я упускаю в ссылках на векторы? Почему указатель на вектор указателей работает, а ссылка на вектор объектов - нет? Разве переданный вектор не должен быть псевдонимом исходного вектора? Почему ссылка показывает изменения, а не объект, на который она ссылается?
Почему мои изменения не меняются, если я не использовал вектор указателей вместо вектора объектов.