Я работаю над небольшим компонентом игрового движка на C++. Различные компоненты добавляются во внутренний список объекта геймобжекты, чтобы сэкономить время, я не сделать переменную-член этих компонентов, только объект игры является переменной-члена, например, так:C++ дизайн игрового движка и объекты, выходящие из области действия
void Initialize()
{
MeshComponent* meshRenderer = new MeshComponent(mesh, material);
m_GameObject.AddComponent(meshRenderer);
}
meshRenderer переменная добавляется в список компонентов в AddComponent(), но выходит за пределы области действия в конце этой функции.
Позже (в обновлении/рисовании цикла) этот компонент вызывается и все работает, несмотря на то, что объект вышел из области во время инициализации.
Насколько я понимаю, что-то не так в области видимости, безопасно ли это использовать или есть другой подход, который я должен предпринять (без необходимости вносить переменные-члены каждого из моих компонентов)?
Спасибо за помощь!
Я настоятельно рекомендую использовать make_shared <> (общий указатель) или make_unique <>, или, по крайней мере, узнать о них вместо «нового» и «удалить». – Robinson