Im not engine developer, but…
Blueprint Generated Class means its a high level class made by Engine for blueprint scripting and other things
Fully functional as runtime class, can have parent c++ class and all c++ variables, fuctions which are exposed to blueprint will be available in generated class by Epics reflection system.
In short when you right click in content and select new blueprint class the select parent class, actually you generate a new “generated blueprint class”.
You are confused a little bit, because you using bad pointer!
If you want spawn any blueprint class (no matter in c++ or in BP) use TSubClassOf SpawnClass; in c++
Expose this to bp (mark with uproperty editanywhere, blueprintreadwrite) and you can setup which bp class you want spawn.
Of course you can use constructobjecthelper to load/find class or runtime methods too, but in BP you can set this in no time.
You have an actor class which you want spawn from gamemode.
In c++ you declare that spawnclass variable, then you make a blueprint from that gamemode, open set actor class, now you are ready for call SpawnActor code in c++.
As input for SpawnActor just add Spawnclass and you are done
Engine will spawn Blueprint Class to your world with all of your blueprint and c++ variables amd functions