Cool, worked for me on Unreal 4.13. At first I couldn’t believe you could actually replace a class just like that, but the doc clearly states it uses the static FNames to identify and replace default classes.
Final code:
MyCharacter.h
#include ...
class AMyCharacter : public ACharacter
{
GENERATED_BODY()
public:
AMyCharacter(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
// ...
}
MyCharacter.cpp
#include ...
#include "MyCharacterMovementComponent.h"
AMyCharacter::AMyCharacter(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer.SetDefaultSubobjectClass(ACharacter::CharacterMovementComponentName))
{
// ...
}