Отсутствует аргумент по умолчанию - ошибка компилятора
void func ( string word = "hello", int b ) {
// some jobs
}
in another function
//calling
func ( "", 10 ) ;
когда я скомпилировал его, компилятор выдает ошибку ;
default argument missing for parameter
как могу ли я исправить это, ничего не меняя, конечно, например, не делая "int b = 0" ? Кроме того, я хочу использовать эту функцию как func ( 10 ) или func ( "привет" ) ? мой компилятор не выполняет свою работу должным образом ?
5 ответов
вы не можете иметь нестандартные параметры после параметры по умолчанию начнется. Другими словами, как бы вы указали значение для b
оставив word
по умолчанию "hello"?
аргументы со значением по умолчанию должны находиться в конце списка аргументов.
поэтому просто измените объявление функции на
void func(int b, string word = "hello")
параметры со значениями по умолчанию должны находиться в конце списка, потому что при вызове функции вы можете оставить аргументы в конце, но не можете пропустить их посередине.
поскольку ваши аргументы имеют разные типы, вы можете получить тот же эффект с помощью перегрузки:
void func ( string word, int b ) {
// some jobs
}
void func ( int b ) { func("hello", b); }
сообщение об ошибке, является правильным. Если заданному параметру назначен аргумент по умолчанию, то все последующие параметры должны иметь аргумент по умолчанию. Вы можете исправить это двумя способами;
(1) измените порядок аргумента:
void func (int b, string word = "hello");
(2) присвоить значение по умолчанию b
:
void func (string word = "hello", int b = 0);
вы не можете исправить это, ничего не меняя!
чтобы исправить это, вы можете использовать перегрузку:
void func ( string word, int b ) {
// some jobs
}
void func ( string word ) {
func( word, 999 );
}
void func ( int b ) {
func( "hello", b );
}