= CreateDefaultSubobject<USceneComponent>(TEXT("ProjectileSceneComponent"));
...
// Use a sphere as a simple collision representation.
CollisionComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent"));
...
// Set the root component to be the collision component.
RootComponent = CollisionComponent;
вот тут тутор https://docs.unrealengine.com/4.26/en-US/ProgrammingAndScripting/ProgrammingWithCPP/CPPTutorials/FirstPersonShooter/3/
вопрос: Как так получается что сначала создается объект и указатель помещается в RootComponent, далее создается другой объект (CollisionComponent), и его указатель перезаписывает указатель в RootComponent? Это какое то шаманство о котором я не прочитал в новых стандартах C++, или это какой то UE4 only шамаство? или это банальная ошибка и будет утечка памяти?
Спасибо за ответ ) если он будет ...
потом елси что на фомру жпика полезу, там спрошу, если тут не скажут )
Ну утечки не будет, скорее всего просто будет висеть scene компонент на новом руте
так это опечатка в туторе, или что это? для меня это выглядит как ошибка в чистом виде, взяли указатель на объект и перезаписали его. Я хочу понять, зачем так делать?
кароч как то странно, может этот случай обраатывает какая то предсборочная утилита, котоаря генерит кучу обвязок на этим и логику делает правильной?
Разработчики тоже могут ошибаться)
ну вот взялся я изучать движек, и тперь мне не дает покя это все )) пойду на форм эпиков тогда хочу понять, зачем так сделано, можно ли так? ))
Если я правильно помню, там работает оно так, что у тебя по умолчанию есть какой-то Root, который обычно просто Scene, и он при первом его переписывании удаляется полностью (поправьте если я не прав)
так он не переписывается же... там прсото в указатель записывается новый адрес... если это не обработано какой то утилиткой котоаря генерит код ,который удалит и перепишет рута валидно
и там вроде бы не shared ptr даже ,т.е. простой указатель, это ж никак не отслеживается
Обсуждают сегодня