このコードがあるとします。あなたの基本的な "呼び出し元が値を提供しない場合、値を計算する"シナリオ。ポインタの正しい無効な値は何でしょうか?
void fun(const char* ptr = NULL)
{
if (ptr==NULL) {
// calculate what ptr value should be
}
// now handle ptr normally
}
、それが判明しかし、ptrがNULLを含め、値のすべての種類を持つことができるので、私はできません
fun(); // don't know the value yet, let fun work it out
または
fun(something); // use this value
のいずれかでこれを呼び出します呼び出し元がptrを提供しないというシグナルとしてNULLを使用します。
だから、NULLの代わりにptrを与えるデフォルト値がわかりません。どのような魔法の価値を使うことができますか?誰にもアイデアはありますか?
ポインタポイントの有効なオブジェクトで、またはnullの場合のいずれか必要があります - 何かがトラブルを求めています。おそらくあなたは[Boost.Optional](http://www.boost.org/libs/optional/)を望んでいますか? – ildjarn
'' NULL 'を提供することとptrを提供しないことの違いは何でしょうか?関数 'handle'が正常にNULLになり、ptrが '提供されていないときの処理方法はどうなるでしょうか? –
私の元のコンセプトでは、 'fun();'と 'fun(NULL); '。なぜなら私はNULLを使うつもりはないからです。しかし、今は 'fun(NULL);を実行して正常に処理する必要があります。それが問題です。私の質問を編集しました。 –