How to update TSubobjectPtr to the current v4.6 changes

Instead of

TSubobjectPtr<USphereComponent> BaseCollisionComponent;

you can now use standard C++ pointers:

USphereComponent* BaseCollisionComponent

In your example, you just forgot the star after USphereComponent. Your FObjectInitializer line looks correct, and should workonce you fix the star.

BaseCollisionComponent = FObjectInitializer.CreateDefaultSubobject<USphereComponent>();

If you’d like to learn more about C++ pointers, take a look at Pointers - C++ Tutorials (specifically the section on declaring pointers).