Okay, from what I gather is that you have a c++ PlayerCharacter class and that you setup your weapons as a c++ AWeapon class that you then create blueprints for.
Why not just create a member in the PlayerCharater class and expose it to blueprints. Then create a blueprint for PlayerCharacter, and then set the weapons there.
For example, in PlayerCharacter:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Guns, meta=(AllowPrivateAccess = "true"))
class UClass* Weapon;
Then when you have BP_PlayerCharacter, you should see the property in the editor window.
If it is really something you need to spawn, then do something like:
FVector SpawnLocation = GetActorLocation();
UWorld* const World = GetWorld();
if (World != NULL) {
if (Weapon) {
World->SpawnActor<AWeapon>(Weapon, SpawnLocation, GetActorRotation());
}
}
This is basically what I do for weapon projectiles.