我有一个函数void f (void*, int);
,用作回调函数。调用者期望void (*)(int)
. 我可以std::bind1st
用来将一个转换为另一个吗?有没有办法在不使用 C++ 11 的情况下做到这一点std::bind
,只是std::bind1st
?
问问题
112 次
1 回答
2
不。虽然std::bind1st()
创建了一个带有调用运算符的函数对象,int
但它不是void(*)(int)
. void(*)(void*, int)
将 a变为 a的唯一方法是拥有一个从全局资源void(*)(int)
中获取 的转发函数,例如,void*
static void* data = 0; // probably needs to be set to a more suitable value
void f_forward(int value) {
f(data, value);
}
任何提供不采用用户定义上下文的回调的人,例如,在void*
刚刚通过的类 C 接口 a 中,都不会对接口考虑太多。
于 2013-12-16T09:59:06.993 回答