私がC++インターフェースを持っているとしましょう
class Iface
{
public:
virtual ~Iface () {}
virtual void foo () = 0;
virtual void bar () = 0;
};
そして、それを一方に公開し、別の場所に実装する必要がある一連のクラスがあります。私は非常に一般的に、本質的に次のようなことをする中間のクラスの束になってしまうことがわかりました:
class InTheMiddleSomewhere
: public Iface // amongst other things
{
public: // Iface
virtual void foo () { if (impl) impl->foo (); }
virtual void bar () { if (impl) impl->bar (); }
private:
IfaceImpl* impl;
};
インターフェースが拡大、増殖、変化するにつれて、これを作成して維持するのは面倒です。
Q: すべての "if (impl) impl->..." を手作業でコーディングするよりも、完全なインターフェイスのパス スルーを実装するためのより良い (多かれ少なかれ自動化された) 方法はありますか?