Я пытаюсь разобраться в решении следующей проблемы.У меня есть следующая функция, которая принимает константную ссылку на объект.Что я хочу сделать, это дать хранилище, указатель на компонент объекта ссылается.Тем не менее, когда я вызываю storage.push_back (), изменения, на которые ссылается компонент объекта (его данные члена повреждены)
Я просто пытаюсь сохранить указатель на тот же компонент объекта, на который ссылается, а не изменить объектсовсем.
void InputSystem::RegisterInputAcceptingEntity(const PlayerInputComponent &component) {
auto *cpy = &component;
std::vector<const PlayerInputComponent*> storage;
storage.push_back(cpy);
}
Почему приведенный выше код вообще изменяет объектный объект, на который ссылается компонент?
edit: Ok. Я отредактировал вектор, чтобы он содержал постоянные указатели.скриншоты, показывающие, что именно происходит.Здесь, в вызываемом объекте, если мы проверяем аргумент, который будет передан по ссылке, мы увидим, что элемент input_component не поврежден. URL к изображению: http://i.imgur.com/lKpRm.png
Однако на втором изображении, сразу после перехода к указанному выше методу:
URL к изображению: http://i.imgur.com/x0Vdn.png
У меня сложилось впечатление, что, проходя по константной ссылке, объекты не должны различаться внутри / снаружи функции.Я не понимаю, почему объект вообще будет изменен, если передан по константной ссылке.