2013-04-27 39 views
0

我遇到了多線程和多文件項目的問題。使用單個文件項目進行測試時工作正常,但由於我試圖將我的頭文件與我的實現分開,有沒有辦法使這項工作?在多文件項目中啓動線程

我得到的錯誤是: 錯誤C3867:'class1 :: Update':函數調用缺少參數列表;使用'& class1 :: Update'來創建指向成員的指針

不幸的是,那裏的建議不起作用。任何幫助將不勝感激。

Class1.H

class class1 
{ 
public: 
    class1(); 
    ~class1(); 


private: 
    thread sThread; 
    void Update(); 
}; 

Class1.cpp

int class1::Initialize() 
{ 
    this->sThread = std::thread(Update); 
} 

回答

1

正如你所說,錯誤的是:

'class1::Update': function call missing argument list; use '&class1::Update' to create a pointer to member 

這樣做。一旦你這樣做,你會發現你需要使用std::bind()來將類的一個實例附加到成員函數中。這看起來像:

thread(bind(&class1::Update, this)) 
+0

我現在有this-> sThread = std :: thread(bind(&class1 :: Update,this));我得到這個錯誤: 錯誤錯誤LNK2019:未解析的外部符號「private:void __thiscall class1 :: Update(void)」(?Update @ class1 @@ AAEXXZ)在函數「public:int __thiscall class1: :Initialize(void)「(?Initialize @ class1 @@ QAEHXZ) – MJLaukala 2013-04-27 04:08:13

+0

忽略。偶然的更新的implimentation註釋掉了。 – MJLaukala 2013-04-27 04:12:29