次の関数宣言:
void Foo:DoSomething( ULONG &Count = 0) { .... }
次のコンパイル時エラーが発生します
error C2440: default argument cannot convert from 'int' to 'ULONG &'
Count
値にパラメータが指定されていない場合にゼロになるように、署名を作成する正しい方法は何ですか。
次の関数宣言:
void Foo:DoSomething( ULONG &Count = 0) { .... }
次のコンパイル時エラーが発生します
error C2440: default argument cannot convert from 'int' to 'ULONG &'
Count
値にパラメータが指定されていない場合にゼロになるように、署名を作成する正しい方法は何ですか。
Countへの非定数参照を使用しているため、デフォルトでr値を割り当てることはできません。
使用する
void Foo:DoSomething( const ULONG &Count = 0) { .... }
void Foo:DoSomething( ULONG Count = 0) { .... }
非定数参照に対してこれを行うことはできません。参照はメモリ内のアドレスを指しています。特に参照セマンティクスが必要な場合を除いて、値を渡すことをお勧めします。