- 論壇徽章:
- 0
|
本帖最后由 sytpb 于 2016-06-05 15:03 編輯
我想在一個(gè)函數(shù)里給多個(gè)不同lambda 函數(shù)指針賦值,所以參數(shù)是 void* 類型
class 中定義如下函數(shù)
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;
}
// 調(diào)用
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 *'
知道犯錯(cuò),但不知道原理是什么,主要是想知道怎么解決,還在同一個(gè)函數(shù)里,不想分不同的函數(shù)里完成,或者加參數(shù),也不用boost 。
|
|