C++ 将std::函数作为模板参数传递给另一个未编译的函数

C++ 将std::函数作为模板参数传递给另一个未编译的函数,c++,function,boost,boost-bind,C++,Function,Boost,Boost Bind,我使用Boost在C+03中开发。 我想绑定一个函数类成员。然后将其作为模板参数传递给通用包装器,并在包装器内部调用实函数。但我无法将其编译 下面是一个演示代码 #include <boost/function.hpp> #include <boost/bind.hpp> #include <functional> #include <iostream> class Request; class Request2; boost::function

我使用Boost在C+03中开发。 我想绑定一个函数类成员。然后将其作为模板参数传递给通用包装器,并在包装器内部调用实函数。但我无法将其编译

下面是一个演示代码

#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <functional>
#include <iostream>

class Request;
class Request2;
boost::function<int (const char *,const char *, Request     *request)> RequestFunc; 
boost::function<int (const char *,const char *, Request2 *request)>     RequestFunc2;
class Request
{

};
class Request2
{

};
class BindingProxy
{
    public:
    int  sendRequest(char *,char *, Request * request)
    {
        return 0;
    }
};
class BindingProxy2
{
    public:
    int  sendRequest(char *,char *, Request2 * request)
    {
        return 0;
    }
};
template <typename F>
void wrapperFunc(F func)
{
    Request request;
    func("","",request);
}
int main()
{
  BindingProxy proxy;  

  RequestFunc  = boost::bind(&BindingProxy::sendRequest, &proxy,_1,_2,_3 );

  wrapperFunc(RequestFunc);

  return 0;
}
#包括
#包括
#包括
#包括
类请求;
类别2;
boost::函数RequestFunc;
boost::函数RequestFunc2;
类请求
{
};
类请求2
{
};
类绑定代理
{
公众:
int sendRequest(字符*,字符*,请求*请求)
{
返回0;
}
};
类BindingProxy2
{
公众:
int sendRequest(字符*,字符*,请求2*请求)
{
返回0;
}
};
样板
void wrapperFunc(F func)
{
请求;
func(“,”请求);
}
int main()
{
绑定代理;
RequestFunc=boost::bind(&BindingProxy::sendRequest,&proxy,_1,_2,_3);
wrapperFunc(RequestFunc);
返回0;
}

首先,
sendRequest
的签名与传递到
boost:function
的签名不匹配,应该是:

int  sendRequest(const char *,const char *, Request * request)
第二,包装器获取指向请求的指针,所以获取并传递:

Request request;
func("","",&request);