Я делаю игру с физикой пули, где у меня есть класс Platform, который содержит btBoxShape, btDefaultMotionState и btRigidBody в качестве членов. При выходе из моей игры происходит сбой. Я храню объекты Platform в std :: vector, и я думаю, что это проблема. Когда я отодвигаю больше платформ, вектор изменяет размеры и перемещается в памяти. Это означает, что любой указатель на форму и движение, которые имеет твердое тело, считается недействительным. Как мне решить это?
Std: deque не сделает недействительными ссылки.
Есть несколько вариантов, которые я могу придумать.
std::array
/std::vector
с фиксированным размером (reserve()
), если возможно
std::vector<Platform*>
Вы, вероятно, должны использовать умные указатели здесь, но в основном выделяйте себя и храните только указатели в vector
,