-1
我與拉姆達打在Visual C++ 11爲什麼我不能在SERVICE_TABLE_ENTRY中存儲lambda函數?
void CWin32Service::RunService (__in DWORD dwArgc, __in LPTSTR *lpszArgv)
{
auto SvcMainptr = [this](__in DWORD dwArgc, __in LPTSTR *lpszArgv) -> void {ServiceMain( dwArgc, lpszArgv);} ;
SERVICE_TABLE_ENTRY DispatchTable[] =
{
{ m_ServiceName, (LPSERVICE_MAIN_FUNCTION)SvcMainptr }, <<== Error HERE
{ NULL, NULL }
};
....
}
該錯誤消息我得到的是:
'類型轉換':不能從轉換 'CWin32Service :: RunService :: < lambda_22F3FB7B8C044A64>' 來'LPSERVICE_MAIN_FUNCTIONW'
在最終的C++ 11規範中,具有EMPTY捕獲規範的lambda可以像普通函數一樣處理並分配給函數指針。坦克爲你提供幫助。順便說一句,service main是一個類成員,所以它不會工作。 – 2012-03-01 18:39:52