An alien or a monster is obviously not a player. That is why I called it a specialized character.
At this point, it might also turn out that multiple inheritance can be a good choice.
You have the data that you don't want to clone for each instance. So this data should be in a special class that you inherit virtually from.
Then there are other data, such as location, weapon and other stuff that all characters have in common. This should also be in a base class which you inherit from normally.
So something like:
Code:
class CCharacter {};
class CVirtualStuff {};
class CPlayer: virtual public CVirtualStuff, public CCharacter {};
class CMonster: virtual public CVirtualStuff, public CCharacter {};
int main() {}
But there's nothing wrong about learning these concepts now. It will save you time later.
Heck, you shouldn't be coding a game without a proper understanding of all parts of the language first.