Quote Originally Posted by laserlight View Post
Public inheritance typically models an "is-a" relationship. A player has one or more weapons (typically expressed by composition, or more loosely by aggregation/association), so you should not be using inheritance to express the relationship between Player and Weapon(s).

Why are you so keen on a function for each weapon? Have you decided what are you trying to model for weapons?
Probably out of my ignorance (I am a total beginner) it simply appears easier to work with an array of weapons, easier to iterate through a loadout, easier to change a loadout by pointing to a new function.

One difficulty I see is that each weapon as a function must have the same set of arguments. Can this be relaxed?

Also, I can do without packing Player and Loadout in one class, I could instantiate and use them separately, keeping track of who has what. At the moment I don’t understand how to insert a Loadout in the constructor of Player.