0
在下面的代碼中,在thread t(&Fred::hello)
我得到一個錯誤,該術語不計算爲帶有0個參數的函數。什麼是問題?創建具有類函數的線程時出錯
#include <iostream>
#include <thread>
using namespace std;
class Fred
{
public:
virtual void hello();
};
void Fred::hello()
{
cout << "hello" << endl;
}
int main()
{
thread t (&Fred::hello);
t.join();
return 0;
}
這是很好的解釋。但是有沒有可以使用emplace語義的線程構造函數的一個版本?這似乎是一個浪費,我必須通過'&f',只爲線程構造函數再次複製它? – Jimm 2013-05-10 15:43:23
@Jimm線程構造函數將只複製*指針*,而不是'Fred'對象。 – juanchopanza 2013-05-10 15:45:30
我只是嘗試傳遞'f'而不是'&f',比如'std :: thread t(&Fred:hello,f)',它似乎正在工作。 Plus構造函數只被調用一次。在這種情況下,線程構造函數似乎在避免f的複製。 – Jimm 2013-05-10 15:54:55