【发布时间】:2014-01-02 08:47:57
【问题描述】:
我有一个 Player 类,一些子类 Player1、Player2、Player3 使用 C++ 扩展了 Player。
类 Player 有一个方法“run”,所有 Player1,2,3 都会覆盖“run”来做不同的事情。
class Player {
public:
virtual void run();
}
class Player1: public Player {
public:
void run();
}
在“main”函数中,我将创建 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到底是什么,构造函数的签名是什么? -
哇。 C11也有类吗?
-
对不起,我的错...我知道这是什么问题@@。我的意思是 C++11 不是 C11,我会更正它...原谅我
-
void main是非法的。请使用int main。