void func ( string word = "hello", int b ) {
// some jobs
}
in another function
//calling
func ( "", 10 ) ;
When I have compiled it, compiler emits error ;
default argument missing for parameter
How can I fix it without changing anything, of course, such as not making "int b = 0" ? Moreover, I want use that function like func ( 10 ) or func ( "hi" ) ? Is my compiler not do its job, properly ?
You cannot fix it without changing anything!
To fix it, you can use overloading:
You can't have non-default parameters after your default parameters begin. Put another way, how would you specify a value for
b
leavingword
to the default of "hello" ?The arguments with a default value have to come in the end of the argument list.
So just change your function declaration to
Parameters with default values have to come at the end of the list because, when calling the function, you can leave arguments off the end, but can't miss them out in the middle.
Since your arguments have different types, you can get the same effect using an overload:
The error message is proper. If the default argument is assigned to a given parameter then all subsequent parameters should have a default argument. You can fix it in 2 ways;
(1) change the order of the argument:
(2) Assign a default value to
b
: