How i can make cards system in my game? (C++ & Blueprints)

Hi guys!
I want to make cards in my game. In Unity for example i can use ScriptableObject for storage static data on disk and load them in runtime.
In UE4 i have

ADBItem - parent Actor class written on C++
FirstItem - generated blueprint class, based on ADBItem
DBArmor - child blueprint class, based on FirstItem

and tried to collect them using UObjectLibrary

void AMyGameModeBase::CheckBP(TArray<ADBItem*>& items)
{
	UObjectLibrary* ItemLibrary = UObjectLibrary::CreateLibrary(ADBItem::StaticClass(), true, GIsEditor);
	ItemLibrary->AddToRoot();
	ItemLibrary->LoadBlueprintsFromPath(TEXT("/Game/DB"));

	TArray<UBlueprintGeneratedClass *> ClassesArray;
	ItemLibrary->GetObjects<UBlueprintGeneratedClass>(ClassesArray);

	for (int32 i = 0; i < ClassesArray.Num(); ++i)
	{
		UBlueprintGeneratedClass * BlueprintClass = ClassesArray[i];
		ADBItem * item = (ADBItem *)BlueprintClass;
		if (item != NULL && !item->GetName().StartsWith(TEXT("SKEL"))) {
			items.Add(item);
			FString trueName = BlueprintClass->GetName();
		}
	}
}

After i call this function in blueprint i receive array of ADBItem

  • DBArmor_C
  • SKEL_DBArmor_C
  • FirstItem_C
  • SKEL_FirstItem_C

and try to cast them to DBArmor. And all cast failed, all items is BlueprintGeneratedClass, and no one DBArmor here.

It is possible to load Generated BlueprintClasses based on parent C++ class and then cast them to child blueprint classes or not. Or i can get ScriptableObject functionality on other way?

Thanks!