最近我看到這篇文章: How do I use boost.lambda with boost.thread to get the thread's return value?從升壓與拉姆達檢索返回值::線程
我試圖執行的答案,它去相當不錯,除了我得到一些解決不了的錯誤。
我的代碼是這樣的:
falcon::Mesh* falcon::ResourceManager::GetMesh(const std::string& id)
{
Mesh* meshPtr;
boost::thread meshLoadThread(boost::lambda::var(meshPtr) = bind(&MeshManager::LoadMesh, MeshManager::GetInstance(), id));
meshLoadThread.join();
return meshPtr;
}
但是,當我嘗試編譯,我得到以下錯誤
error C2440: '=' : cannot convert from
'const std::tr1::_Bind<_Result_type,_Ret,_BindN>'
to 'falcon::Mesh *'
我知道它應該正常工作,因爲在本例中它也能工作! 任何人有任何建議?
給了我一個類似的錯誤,而不是它不是性病:: TR1 ::現在綁定,但的boost ::綁定 錯誤錯誤C2440: '=':不能從「常量的boost ::轉換_bi :: bind_t'to'falcon :: Mesh *' –
ThijsM
我不小心刪除了我以前的評論。我添加了一個我認爲應該解決這個問題的答案。 – interjay