Create a reference from a class pointer

I’ve been trying to create a base “faction” class from which I derive many NPC factions (Civilians, bandits, etc.) and add a faction reference as a property to each character in the world. I’ve been able to do this easily until the point of actually assigning a reference of a faction (derived from UObject) to a property of a character (A pointer of the FactionBase type). The problem is that I can get a pointer to the class just fine (although such a pointer would be useless(?)), but have no obvious way of returning a new reference to said object.

The solution I’m trying now is to add BlueprintReadWrite functions to access and modify a TArray belonging to my custom gamemode (made in C++) that contains references to each faction, and assign one to each character upon their creation based on an integer ID assigned to each faction type and a desired ID that is a property of each unique character. Of course, I still run into the problem of creating the references to add to the array for the first time.

Can anyone offer some advise on how to accomplish this task either in the way I suggested above or any other? I feel like there is a critical piece of UE4 syntax or functionality that I’m overlooking right now. Thank you in advance!

To clarify:
I made a Faction class in C++ derived from UObject. It holds almost nothing other than a boolean array.
I derived a blueprint called FactionBase from Faction inside the editor.
I extended FactionBase to make another blueprint (call it Civilian), and modified some default values on it.
I want to add a reference to an object of this newly created Civilian to a property of type FactionBase pointer belonging to an actor. How can I do this?

A snippet of the relative code would be helpful in aiding you.

I not sure to understand you correctly. Are you want to get pointer to class instance from class pointer?

I clarified my earlier post. Sorry for not being very straightforward, I wrote it while extremely tired…