如何把一个类的非STATIC成员函数当作参数传递给模板函数
template <class F>
void func(F f)
{
f();
}
class A{
private:
void f(){cout < < "ffff " < <endl;}
public:
void zw(){func(f);}
};
这样写编译不过.
如何把一个类的非static成员函数当作参数传递给模板函数
[解决办法]
晕,去看看C++必知必会-条款18:函数对象.
函数对象也称为仿函数,通过重载operator()来达到类似函数调用的方式使用对象.
其本质就是object.operator()
[解决办法]
这样是不是只能绑定foo类型?
感觉适应性太差了
==========================================
你的要求是类的非静态成员函数。
要调用一个类的非静态成员函数,要有this指针。
所以只能定义一个类对象。
[解决办法]
这样是不是只能绑定foo类型?
感觉适应性太差了
============
非static成员函数不能f()调用. 要指定this是谁. 要多一个参数. 例如:
template <class T, class PMemFun>
void func(T& obj, PMemFun pmemfun) {
(obj.*pmemfun)();
}
class A{
private:
void f(){cout < < "ffff " < <endl;}
public:
void zw(){func(*this, &A::f);} //指出this是谁.
};
在Loki库中有现成的 仿函数 的模板 Functor . 楼主参考.