2012-02-15 12 views
0

参照であるboolにどのようにデフォルト値を割り当てるのですか?参照によってBoolのデフォルト値を設定する

私はこのような機能を持っている:私は、この文脈でBにデフォルト値を割り当てる必要がありますどのように

void someFunction(bool a = true, bool& b) 
{ 
if(a) 
    b = false; 
else 
    std::cout << "nothings changed" << std::endl; 
} 

を?

void someFunction(bool a = true, bool& b = false) 

は機能しません。それでどうすればいいのですか?

+0

http://stackoverflow.com/questions/1059630/default-value-to-a-parameter-while-passing-by-reference-in-cは可能性がありいくつかの使用の。 –

+0

'b'が* out *変数であると想定されている(つまり、それを使っていくつかのデータを返しています)場合、参照を使って行うことはできません。 – Naveen

+0

私は理解していません。私はデフォルト値を割り当てていない場合は正常に動作します。私ができるなら人生はずっと簡単になるだろう。 –

答えて

5

非const参照を値で初期化することはできません。彼は結果を無視したい場合は、クライアントが自分自身で決めることができ

bool someFunction(bool a = true) 
{ 
    return !a; 
} 

か:

bool dummy_variable; 

void someFunction(bool a = true, bool& b = dummy_variable) 
{ 
    // ... 
} 

しかし、それはおそらく、単純にブール値を返すために、多くの理にかなって:あなたは、変数を必要としますない。

0

一時オブジェクトを非const参照にバインドすることはできません。あなたは、非一時オブジェクトを使用する必要があります。

bool bDefaultVal = false; 

void someFunction(bool a = true, bool& b = bDefaultVal) 
{ 
    ... 
}