用C++多線程11所以,我的問題是這樣的:非靜態成員函數
- 我有一個叫NetworkInterface類正在使用RakNet網絡庫建成。
- 它包含一個使用RakNet用來發送和接收數據的while循環的方法。
現在,我做了NetworkInterface類單身,因爲我希望它只是在我的遊戲我在寫有一次。
但是,如果我只是用while循環調用方法,它會阻止我的整個gqme,所以這就是爲什麼我希望它在不同的線程上運行,所以它不會干擾遊戲機制。 現在,我使用std :: thread對象在另一個線程上的NetworkInterface中啓動該方法,但它拋出了C3867錯誤,該錯誤聲明該方法需要是靜態的或某種類型的(我已經在Google上找到了這個),但我不知道不知道如何解決這個問題,因爲我在該方法中使用的變量不能是靜態的。
我希望這很清楚。簡而言之,我將如何在我的程序的單獨線程中實現來自類的非靜態方法。或者,還有更好的方法? (如果彈出,我不想使用Boost庫)
我試過了,但它似乎沒有工作。目前我有這個: UpdatePackages x; 的std ::線程T1(UpdatePackages :: FUNC,&x); t1.join(); 但我不能這樣做,顯然這是在保持UpdatePackages類方法的類的構造函數(對不起我。不能改變註釋的格式) – Dries
@Dries你應該傳遞'this'而不是創建另一個對象,當然你想從'this'調用一個方法,對嗎?它會在另一個線程上運行,但它有這個原理和明白地調用一個方法一樣''std :: thread t1(&UpdatePackages :: func,this);' –
是的,所以我現在改了它,唯一的錯誤就是'&UpdatePackages :: func'。說'名字後跟::必須是一個類或命名空間名',我是否需要包含一些東西來使用':: func'? – Dries