假设我有一个 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;
};
随着接口的扩展、增殖和变化,编写和维护变得很烦人。
问:有没有比手工编写所有“if (impl) impl->...”代码更好的(或多或少是自动的)方法来实现完整接口的传递?