あるとき、私は問題を抱えていること、私はこのようなものを使用する場合:私は何も値が見つからない時に返すために何を知らない「が見つかりません」どのように戻るには、戻り値はconst参照
const MyList& my_list = getListForThisRegion(/*region ID, ...*/);
を。
私の問題は、(値を返すときにgetListForThisRegion
から)「値が見つかりません」という信号を呼び出し側に送信する方法がありたいということです。ポインタを返すと、私はnullptr
を返すことができましたが、参照でそれを行う方法はわかりません。私が考えることができるのは、MyList
の静的メンバーnot_found
を持っていて、そのリファレンスを返していますが、醜いようです。
そして、リストは "太って"よく使われるので、値を返すことはできません。
EDIT:すばらしい答えのトンですが、発生する回数が多い(パーセントがnbNotFound/nbCalls
)ため、例外は許容される解決策ではありません。
EDIT2:boost :: optionalについて - どのように複雑にマスターするのですか?私はそれがいくつかの非自明な知識(非明白=単に構文を知っていない何か)を必要とするのかどうか?
例外をスローするといいでしょう。 – BigMike
'boost :: optional'を参照することもできます – Akanksh
リファレンスはオブジェクトを参照する必要があるため、例外をスローするか参照を使用しないでください。 'boost :: optional'は素晴らしい選択ですが、それは過度のものかもしれません。ポインタを使用するだけです。 – GManNickG