0

有时我发现自己在编写非常简单的包装器,其中包装器方法直接对应于适配类的一种方法,即:

class ToBeAdapted
{
    public:
    void a();
    void b(int arg);
};

class Wrapper
{
   public:
   void newA()
   {
      _adapted.a();
   }

   void newB(int arg)
   {
      _adapted.b(arg);
   }

   private:
   ToBeAdapted _adapted;
};

这(可能使用模板魔法和/或暗预处理程序?)是否可以概括一下,只是为了节省编写时间并让以后更容易切换包装界面?

像这样的东西会很酷:

wrap_around<ToBeAdapted>(ToBeAdapted::a, newA, ToBeAdapted::b,newB) Wrapper; //Creates the same wrapper class as specified above.
4

1 回答 1

2

考虑使用私有继承:

class Wrapper : ToBeAdapted
{
  public:
    void newA() { a(); }
    void newB(int arg) { b(arg); }
};
于 2012-07-28T13:28:51.287 回答