値またはオブジェクトが存在しない場合に特別なものを返す関数の最良のシグネチャは何ですか?
複数のオブジェクトを返す関数の場合、関数プロトタイプは
QList<X> getSomeXOrNothing();
- オブジェクトがある場合はオブジェクトのリストを返し、オブジェクトがない場合は空のリストを返します。これは私のニーズに完全に適合し、操作に便利です。
さて、関数は単一のオブジェクトしか返さないか、何も返さないことを知っています。最良のシグネチャは何でしょうか? エラーリークの可能性があるため、生のポインターを返すことは望ましくありません。
共有ポインターを返すか、単一の値を持つリストを返すかについて議論しています。
QList<X> getSingleXOrNothing();
QSharedPointer<X> getSingleXOrNothing();
しかし、それを行うためのより良い方法があるかどうか疑問に思っています-共有ポインターは不要なオーバーヘッドを追加しますが、リストにはオブジェクトを1つしか含めることができないことがわかっているため、リストを返すことは議論の余地があります.
編集: QList、SharedPointr、および QVariant のすべてが許容されるオプションですが、私はすべてのバイトがカウントされる組み込みデバイス用に開発しており、この関数への呼び出しが多数あるため、条件を指定して最適なコンテナーを見つけようとしています-それは 1 つですオブジェクトまたは何もありません。