C++一个类模板的成员函数调用另一个类的模板成员函数
1个回答
展开全部
使用std::bind
std::bind(&xxx::b,this, std::placeholders::_1, ....) //有一个参数要被外部传递xxx::b
类函数
this
类对象指针,也可以具体的对象指针,如xxx*
px;
传px;
std::placeholders::_1
需要被传递的参数个数
另外可以在std::bind的时候额外传递参数
如:
double xxx::c(double *para, bool su);
std::bind(&xxx::c,this, std::placeholders::_1, true) // 外部传一个参数,这里额外传一个参数
std::bind(&xxx::c,this, std::placeholders::_2) // 外部传二个参数,就不能额外传参数了
可以使用以下宏定义,出自cocos2dx
#define cc_callback_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__va_args__)
#define cc_callback_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__va_args__)
#define cc_callback_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__va_args__)
#define cc_callback_3(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##__va_args__)
std::bind(&xxx::b,this, std::placeholders::_1, ....) //有一个参数要被外部传递xxx::b
类函数
this
类对象指针,也可以具体的对象指针,如xxx*
px;
传px;
std::placeholders::_1
需要被传递的参数个数
另外可以在std::bind的时候额外传递参数
如:
double xxx::c(double *para, bool su);
std::bind(&xxx::c,this, std::placeholders::_1, true) // 外部传一个参数,这里额外传一个参数
std::bind(&xxx::c,this, std::placeholders::_2) // 外部传二个参数,就不能额外传参数了
可以使用以下宏定义,出自cocos2dx
#define cc_callback_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__va_args__)
#define cc_callback_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__va_args__)
#define cc_callback_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__va_args__)
#define cc_callback_3(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##__va_args__)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询