我正在尝试构建一个在其中存储用户定义函数以供以后使用的类。我决定使用boost::function
对象。
但是,在编译时出现以下错误:
error: no match for ‘operator=’ in ‘((Someclass*)this)->Someclass::someFunction = ((Someclass*)this)->Someclass::DefaultFunction’
我不理解此错误,因为据我所知,someFunction和DefaultFunction应该具有相同的类型。
代码如下所示:
#include <boost/function.hpp>
class Someclass{
private:
boost::function<int(int)> someFunction;
int DefaultFunction(int i);
public:
Someclass();
~Someclass();
void setfunction(int (*f)(int));
};
int Someclass::DefaultFunction(int i){
return i+1;
}
Someclass::Someclass(){
someFunction=DefaultFunction;
}
~Someclass::Someclass(){
}
void Someclass::setfunction(int (*f)(int i)){
someFunction=f;
}
void MyProgram(){
Someclass s;
}
任何人都可以提供有关如何构造此类对象的任何指针吗?或者,如果有比我尝试的方法更好的方法,您能向我解释一下吗?
最亲切的问候!