lambda 函数指针
本帖最后由 sytpb 于 2016-06-05 15:03 编辑我想在一个函数里给多个不同lambda 函数指针赋值,所以参数是 void* 类型
class 中定义如下函数
template<typename T>
class XType
{
public:
enum FUN_TYPE{REFLECT,COMPARE}; /*FOR EXTENSION*/
void CallBackRegister(FUN_TYPE nType,void* ptrFun)
{
if(nType == REFLECT)
_reflectFun = (FUN_REFLECT)ptrFun;
else if(nType == COMPARE)
_compareFun = (FUN_COMPARE)ptrFun;
}
private:
typedef function<T(string)>FUN_REFLECT;
FUN_REFLECT _reflectFun;
typedef function<T(T,T)> FUN_COMPARE;
FUN_COMPARE _compareFun;
}
// 调用
XType<string>x1;
XType<string>x2;
x1.CallBackRegister(XType<string>::FUN_TYPE::REFLECT,(void*)([](string s){return s;}));
x2.CallBackRegister(XType<string>::FUN_TYPE::REFLECT,(void*)([](string s){return s;}));
cannot cast from type '<lambda at bus.cpp:115:65>' to pointer type 'void *'
知道犯错,但不知道原理是什么,主要是想知道怎么解决,还在同一个函数里,不想分不同的函数里完成,或者加参数,也不用boost 。
是什么让你产生了lambda是一个普通函数这种错觉呢? 回复 2# windoze
我错了 版主!:'(
页:
[1]