How can I create a new object from a pointer?

It’s not replaced, it does different things. GENERATED_UCLASS_BODY() when you need the Objectinitializer in your constructor, GENERATED_BODY when you want to define your class constructor yourself…

GENERATED_UCLASS_BODY() macro ends in public scope
GENERATED_BODY macro ends in private