【发布时间】:2012-10-11 08:28:46
【问题描述】:
我正在为一个类编写一个 .hpp 文件,该类应该接收一个函数作为其参数之一并将其存储在一个成员变量中,到目前为止,我的代码如下所示:
template<typename Function> class myClass
{
public:
myClass(Function function) : pvFunction( function ) {}
//Functor operator
double operator() (double x) const{
return pvFunction(x+4);
}
private:
Function pvFunction
}
程序看起来毫无意义,因为它返回的值现在并不重要。我只是想弄清楚如何将一个函数传递给这个类并使用它的仿函数运算符。唯一的问题是:
1) 我不知道这个类的定义是否正确,意思是这是接受任何类型的函数作为参数传递给这个类的对象的正确方法。
2) 如何在我的程序中创建此类的实例?如何将函数传递给新对象然后调用它?
搞了这么久,还是搞不懂
编辑:
在我的程序文件 main.cpp 中,此代码收到错误:
double function(double);
int main()
{
myClass<double> myClassObject((function));
return 0;
}
double function(double x)
{
return (x+3.0);
}
【问题讨论】:
-
看看
boost::function<>的实现以获得灵感。 -
你的真正意思是“任何类型”还是“匹配某个参数类型列表和返回类型的任何类型”?
标签: c++ function templates implementation