モックを使用した単体テストを容易にするために、いくつかのインターフェイスを C++ コードに挿入したいと考えています。
これに関する問題は、C++ のメソッドから抽象クラスを返すのが面倒なことです。値で返すことはできないため、ポインターまたは参照を返す必要があります。
過去 6 ~ 7 年間の C++ のすべての開発を考えると、抽象基底クラスを返すためのより良い方法があるかどうかを尋ねてみようと思いました。ノイズのないインターフェイスは次のようになりますが、これは不可能だと確信しています。
IBaseInterface getThing() {return DerivedThing{};}
過去にこれを行ったことを覚えている方法は、ポインターを使用することです (おそらく現在はスマートポインターです)。
std::unique_ptr<IBaseInterface> getThing() {return std::make_unique<DerivedThing>();}
ポインターの問題は、私が実際に nullptr を利用するつもりがないことです。したがって、値ではなくポインターを処理するオーバーヘッドとノイズは、リーダーとして何の価値もありません。
これを処理するために私が知らないより良い方法はありますか?