C++ 将boost::函数克隆到指针中并使用该指针调用包装函数
我试图使用指针创建一个C++ 将boost::函数克隆到指针中并使用该指针调用包装函数,c++,clone,boost-function,C++,Clone,Boost Function,我试图使用指针创建一个boost::function的副本,并使用该指针调用该函数。我的问题是 这样克隆一个boost::function是正确的 对fp->target()的调用应该调用还是不调用函数 通过boost::函数 非常感谢 boost::function<void()> f = boost::bind(&my_f,my_value); boost::function<void()> fp* = new boost::function<v
boost::function
的副本,并使用该指针调用该函数。我的问题是
boost::function
是正确的fp->target()
的调用应该调用还是不调用函数
通过boost::函数 boost::function<void()> f = boost::bind(&my_f,my_value);
boost::function<void()> fp* = new boost::function<void()>( f ); // clone f
typedef void(*fptr_type)();
fp->target<fptr_type>(); // doesn't work! Is this correct?
fp->operator(); // doesn't compile
//=>error: statement cannot resolve address of overloaded function
boost::function f=boost::bind(&my\u f,my\u值);
boost::function fp*=新的boost::function(f);//克隆f
typedef void(*fptr_type)();
fp->target();//不行!这是正确的吗?
fp->operator();//不编译
//=>错误:语句无法解析重载函数的地址
看看这段代码,我想这就是你想要做的:
void my_f(void)
{
cout << "hello";
}
int main(void){
boost::function<void()> f = boost::bind(&my_f);
boost::function<void()>* fp = new boost::function<void()>( f );
typedef void(*fptr_type)();
fp->target<fptr_type>();
(*fp)();
}
void my\u f(void)
{
cout target();
(*fp)();
}
用GCC编译,效果很好,我可以看到cout。看看这段代码,我想这就是你想要做的:
void my_f(void)
{
cout << "hello";
}
int main(void){
boost::function<void()> f = boost::bind(&my_f);
boost::function<void()>* fp = new boost::function<void()>( f );
typedef void(*fptr_type)();
fp->target<fptr_type>();
(*fp)();
}
void my\u f(void)
{
cout target();
(*fp)();
}
用GCC编译,效果很好,我可以看到cout。如果boost::function提供了一个复制构造函数,那么在这种情况下,您可以假设它可以工作并解决f的所有生存期问题(否则就不会提供,您应该在它们的bugzilla上提交一个bug报告) 只是功能,你要做的是:
fp->operator()();
或如上海报所示:
(*fp)();
如果boost::function提供了一个复制构造函数,那么您可以假设它可以工作,并在这种情况下处理f的所有生存期问题(否则就不会提供它,您应该在它们的bugzilla上提交一个bug报告) 只是功能,你要做的是:
fp->operator()();
或如上海报所示:
(*fp)();
为什么,哦,你为什么要新的复制?!请告诉我一个合理的理由。为什么,哦,为什么你new
ing复制品?!请告诉我一个合理的理由。