In case anyone has this problem and they are already using it in the constructor - if you are working with a Blueprint and don’t add _C to the end of the path, you will get “Error: CDO Constructor: Failed to find…”. A Blueprint path like “Class’Game/Blueprints/MyGameItem.MyGameItem’” would be constructed like the following:
static ConstructorHelpers::FObjectFinder<UClass> playerBlueprintClass(TEXT("Class'Game/Blueprints/MyGameItem.MyGameItem_C'"));
You need to make sure it is before the apostrophe and quotations at the end.
This is not the case with something like a skeletal mesh though and is for reference for anyone having trouble with Blueprints.
As Dune states in his answer, the constructor helper functions have to be called within a constructor, as do PCIP functions (like CreateDefaultSubobject). To dynamically change things like skeletal meshes at run-time, you will want to get them during construction and store a reference to the object, like so:
static ConstructorHelpers::FObjectFinder<USkeletalMesh> xyz(TEXT("SkeletalMesh'/Game/Dir/abc.abc'"));
MyClassSkeletalMeshReference = xyz.Object;
If, for some reason, you want to load up something like a skeletal mesh outside of the constructor, instead of doing the above, you can do the following instead:
USkeletalMesh* skeletalMesh = Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), NULL, TEXT("SkeletalMesh'/Game/Dir/abc.abc'")));