0

時々、私は本当に単純なラッパーを書いていることに気付くことがあります。ラッパーメソッドは、適合クラスの1つのメソッドに直接対応します。

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 に答える