default arguments in constructor

arguments, c++, constructor, default

Solution

Default arguments can only be supplied to a continuous range of parameters that extends to the end of the parameter list. Simply speaking, you can supply default arguments to 1, 2, 3, ... N last parameters of a function. You cannot supply default arguments to parameters in the middle of the parameter list, as you are trying to do above. Either rearrange your parameters (put `hlth` and `exp` at the end) or supply a default argument for `nme` as well.

Additionally, you constructor initializer list doesn't seem to make any sense. What was the point of passing `entyID` and `nme` from outside, if you override their values anyway in the constructor initializer list?

Problem

Can I use default arguments in a constructor like this maybe `Soldier(int entyID, int hlth = 100, int exp = 10, string nme) : entityID(entyID = globalID++), health(hlth), experience(exp), name(nme = SelectRandomName(exp)) { }` I want for example exp = 10 by default but be able to override this value if I supply it in the constructor otherwise it should use the default. How can I do this, I know my approach does not work.... If I supply any value in the initialization list no matter whatever I supply in constructor gets overwritten ofcourse on the other hand whenever I supply a value in constructor then why do I need a default value in the first place as every time I am supplying a value for object initiation...? Should I use different overloaded constructors or do you people have any other ideas....?

Original source