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.