1. 程式人生 > >C/C++ 區域性類和巢狀類

C/C++ 區域性類和巢狀類

class Interface
{
public:
   virtual void Fun() = 0;  
};

template <class T, class P>
Interface* MakeAdapter(const T& obj, const P& arg)
{
    int x;
   class Local : public Interface
   {
   public:
      Local(const T& obj, const P& arg)
         : obj_(obj), arg_(arg) {}
      virtual void Fun()
      {
          x = 100;
         obj_.Call(arg_);
      }
   private:
      T obj_;
      P arg_;
   };
   return new Local(obj, arg);
}