c++無法轉換lambda.

錯誤如下:無法將參數 3 從“main::<lambda_71675a5b8108b8449203c47b85b0730b>”轉換爲“cinatra::client_callback_t”.
這裏我們要先找到這個client_callback_t類型的定義.
可以先把所有相關文件都合併起來,然後再搜索.
找到類似using client_callback_t = std::function<void(boost::system::error_code, std::string_view)>;語句.
然後按這個簽名去寫函數/入函數,就可以了.
這裏開始的簽名是client->upload_file("/um", filename,[](auto ec){,
這樣是編譯不過的,因爲需要兩個參數,而只提供了一個.入是可以直接寫auto的,其他函數是不能這樣的.因而可以這樣改:[](auto ec,auto b){.
當然,自己另建個函數(加上具體簽名類型也是可以的,不過入函數可以推導).
以後遇見這類lambda轉換問題都可以照着做.
希臘字母讀音表

發佈了366 篇原創文章 · 獲贊 25 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章