キーでインデックス付けされたオブジェクトを格納するマップに似た単純なコンテナクラスをC++で記述しています。次のようなアクセサ機能を提供したいのですが。
V& getValue(const K &key);
ここで、値への参照を返します。
しかし、キー/値が存在せず、ユーザーに何らかのステータスを返すことができる場合にも対処したいと思いました(ステータスタイプを介して発信者に連絡したい理由がいくつかある可能性があります) )。
私は次のことができると思いますが、これを呼び出すには、この関数を呼び出す前にVオブジェクトを構築する必要があり、内部Vオブジェクトを参照によって渡されるオブジェクトにコピーするだけなので、それは悪いようです。
Status getValue(const K &key, V& v);
私もできます:
V &getValue(const K &key, Status &s);
しかし、何らかの理由で、ステータスからフォーカスが外れ、ユーザーがステータスを確認するのを忘れる可能性があるため、少し不格好に思えます(ただし、それは私の問題ではないかもしれません)。
それで、とにかく似たような機能を持つことはありますか
Status getValue(const K &key, V& v);
ダミーのVオブジェクトを呼び出す前に構築する必要がありませんか?参照を参照に渡すことはできません。ポインタを使用できて満足していると思いますが、使いやすく、関数についての理由を作成するのはあまり望ましくありません。
何かご意見は?