首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么把一个类的非STATIC成员函数当作参数传递给模板函数

2012-02-05 
如何把一个类的非STATIC成员函数当作参数传递给模板函数template classFvoidfunc(Ff){f()}classA{priva

如何把一个类的非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 . 楼主参考.

热点排行