我想向一个类传递一个函数对象,这个类将使用函数对象在类内部执行一些工作。
但问题是,我不知道将要传入什么函数对象。所以我想到,在类中定义一个void *
指针,这个指针将被初始化为将要传入的函数对象。
代码如下:
class A
{
public:
//...
void doSomeJob(int x)
{
(*functor)(x); //use the function object to process data x
}
private:
//...
void *functor; //function object's pointer will be assigned to this pointer
};
但是代码不起作用。 我猜,不能以那种方式使用
void *functor
。我知道我可以使用
模板类
完成工作,但我的问题是,我是否仍然可以使用函数对象指针
来完成工作,如何实现?
附言
为了让我的问题更清晰,可能会有几个函数对象,它们之间的区别在于它们如何处理数据,我不知道将传递哪个函数对象,但我知道它们每个都需要一个int
参数。正如一些答案所述,我可以通过
函数指针
来完成工作,但是函数对象比函数指针具有更多的实用功能,例如状态
,这就是我要使用的东西。