我有一個類播放器,並且一些子類Player1,Player2,Player3使用C++擴展播放器。
類播放器有一個「運行」的方法,所有Player1,2,3將覆蓋「運行」做不同的事情。
如何在實例方法中使用C++ 11線程?
class Player {
public:
virtual void run();
}
class Player1: public Player {
public:
void run();
}
在「主」的功能,我將創建Player1,2,3
的一些實例,這些實例的一些C++ 11線程調用方法「運行」。
int main() {
Player1 player1;
Player2 player2;
Player3 player3;
Thread thread1(player1.run, this);
Thread thread2(player2.run, this);
Thread thread3(player3.run, this);
thread1.join();
thread2.join();
thread3.join();
return 0;
}
我都試過,我知道這是行不通的,
所以我嘗試用另一個函數來調用實例方法。
function doRun1(Player1 player){
player.run();
}
int main() {
Player1 player1;
Player2 player2;
Player3 player3;
Thread thread1(doRun1, player1);
Thread thread2(doRun2, player2);
Thread thread3(doRun3, player3);
thread1.join();
thread2.join();
thread3.join();
return 0;
}
這樣似乎解決問題,但我要創建doRun1,doRun2,doRun3 ....大量的功能,
因爲doRun1,2,3的參數需要被宣告這是PLAYER1 ,2或3
我想不出還有什麼更好的解決辦法,有人可以幫我@@?
C11與此有什麼關係? 「Thread」究竟是什麼,那個構造函數的簽名是什麼? – Mat
哇。 C11也有課嗎? – juanchopanza
對不起,我的錯......我知道@@是什麼問題。我的意思是C++ 11不是C11,我會糾正它...原諒我 –