0
我想通過引用傳遞給線程,一個變量定義爲:不能按引用傳遞到線程
zmq::context_t context(1);
這樣的:
t[thread_nbr] = std::thread(worker_routine, (void *)&context, trained_images);
然而,當我做我得到的以下錯誤:
/usr/include/c++/5/functional:1505:61: error: no type named ‘type’ in ‘class std::result_of<void* (*(void*, std::vector<TrainedImage>))(void*, std::vector<TrainedImage>&)>’
typedef typename result_of<_Callable(_Args...)>::type result_type;
^
/usr/include/c++/5/functional:1526:9: error: no type named ‘type’ in ‘class std::result_of<void* (*(void*, std::vector<TrainedImage>))(void*, std::vector<TrainedImage>&)>’
_M_invoke(_Index_tuple<_Indices...>)
如果我嘗試做std::ref()
有了它,我收到了刪除功能的錯誤。
有誰知道我能做什麼?
是什麼'worker_routine'的簽名? – user463035818
[Off Topic]當你使用'std :: thread'時,你真的不需要將任何東西投射到'void *'。它被設計用於類型系統。 – NathanOliver
您可以嘗試創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示?包括'worker_routine'和'trained_images'的聲明(至少)。 –