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( "hi")のような関数を使用したいのですが? 私のコンパイラは仕事をしていないのですか?
デフォルト以外のパラメーターを指定することはできませんafterデフォルトのパラメーターが始まります。言い換えると、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); }
エラーメッセージは適切です。デフォルト引数が特定のパラメータに割り当てられている場合、後続のすべてのパラメータにはデフォルト引数が必要です。 2つの方法で修正できます。
(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 );
}