Spawn various blueprints inherited from c++ class in code

I have GameCharacter c++ class, bluepring generic_NPC, inherited from GameCharacter and multiple blueprints inherited from generic_NPC: NPC1_BP, NPC2_BP etc.

What I am trying to do is to spawn exact NPC.
I already know that I need to fill reference in constructor of GameCharacter class like this:

AGameCharacter::AGameCharacter()
{
..................
	static ConstructorHelpers::FObjectFinder<UBlueprint> NPCBlueprint(TEXT("Blueprint'GameFolder/../NPC1_BP.NPC1_BP'"));
	if (NPCBlueprint.Object)
		NPC_BP_Reference = NPCBlueprint.Object->GeneratedClass;
}

and store it in some GameCharacter class variable, I called it NPC_BP_Reference. So that I could later spawn it with something like this: A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums

What I don’t understand is how can I choose exact NPC_BP to spawn?
I need somehow change TEXT("Blueprint'GameFolder/../NPC1_BP.NPC1_BP'"), I tried to override constructor so that I could pass in TCAHR* string with reference to exact NPC to spawn, but I don’t get how do I implement it with 's snippet, or even simple ()->SpawnActor(NPC_BP_Reference, Loc, Rot, SpawnInfo);

Please advise!

UPDATE:
In the end I got it working, but not the way I’d like it to.
I had to add reference loader into GameMode class constructor and load there every NPC I wish to use in game.
What I don’t like is that every NPC loads about 4 sec (checked via VisualStudio Debugger) and that’s waaaaay to slow. For 20 NPC it would take more than a minute to just start up my game, which is not cool. So question still stands.

BTW, I tried using FObjectFinder in constructors of other classes, but editor stops loading at 71-72%.

Just create multiple for each of NPC blueprint. Or else you want to create something dynamic, then iterate thru all UClasses and store once you want in array:

for (TObjectIterator<UClass> Itr; Itr; ++Itr)
{
	if (Itr->IsChildOf(UMyBaseClass::StaticClass()) && !Itr->HasAnyClassFlags(CLASS_Abstract))
	{
		// Process the subclass here
	}
}

It’s a expensive process so do it once on game start up

Alternaticly incorporate editor’s propety editor and select NPC there form the list by making UClass* or TSubclassOf propety

Well, I thought abot that, I have pretty limited list of NPCs, about 15 or 20, so at game start I could load all references in gameState constructor, store them in array and later call for which ever I need. But wasn’t sure if that’s a good idea, since most likely I wouldn’t need all of them at each game session. It’s not critical in current case, but I try to make everything as optimised as it is possible, so hoped there is any other way.

Didn’t quite get what you ment by

Just create multiple for each of NPC
blueprint.

Create multiple c++ classes inherited from common GameCharacter class and then NPC_BPs inherited from this classes? That wouldn’t work since in generic_NPC blueprint I have some bp functionality. I intend to rewrite it later in c++, but not now.