Error when overriding APawn::GetMovementComponent()

You probably just need to call Get on your TSubobjectPtr.

virtual class UPawnMovementComponent* GetMovementComponent() const OVERRIDE { return ShmupPawnMovement.Get(); }

EDIT: Actually, TSubobjectPtr has a cast operator to the wrapped type, so it’s probably not that. It’s probably missing the type declaration like DarthB suggested.