異種オブジェクトをヒープに割り当てて呼び出し元に返すファクトリ メソッドを書きたいとします。私はこのようなAPIを設計することを考えています:
bool MakeEm(auto_ptr<Foo>& outFoo, auto_ptr<Bar>& outBar) {
...
if (...) {
return false;
}
outFoo.reset(new Foo(...));
outBar.reset(new Bar(...));
return true;
}
これにより、呼び出し元はこれを行うことができます。
auto_ptr<Foo> foo;
auto_ptr<Bar> bar;
MakeEm(foo, bar);
私の質問は、「これは慣用的なものですか?そうでない場合、これを行う正しい方法は何ですか?」です。
struct
私が考えることができる代替アプローチには、 のを返すことauto_ptr
、またはファクトリ API を記述して生のポインター参照を取得することが含まれます。どちらもより多くのコードを記述する必要があり、後者には例外の安全性に関して他の落とし穴があります。