局部类
局部类的限制
local class不能定义static成员变量,也不能访问non-static局部变量。
使用场景
例子:适配器
class Interface
{
public:
virtual void fun () = 0;
};
template <class T, class P>
Interface* MakeAdapter(const T& obj, const P& arg )
{
class Local : public Interface
{
public:
Local(const T& obj, const P& arg)
: obj_(obj), arg_(arg)
{ }
virtual void fun ( )
{
obj_.call(arg_);
}
private :
T obj_;
P arg_;
};
return new Local(obj, arg) ;
}