初次接触template,有有关问题请问(与基类和派生类相关)
初次接触template,有问题请教(与基类和派生类相关)
假设基类是CFootballClub,派生出子类CItalyClub、CEnglandClub、CSpainClub,这些子类再分别派生出诸如CJuventus、CInterMilan、CManUtd、CArsenal、CBarcelona等等子类。。。。
现在想实现如下的工作,对于每个子类来说,调用它的Start函数的时候,都会启动一个ProcessThread线程,并返回pthread_t指针(供在它的WaitForFinish函数里面pthread_join用),在ProcessThread线程里面执行该子类的具体处理过程的Proces函数。
如果不想在每个子类里面都写一遍的话,那么在CFootballClub这个基类里面应该怎么写呢?
尝试用template,但是怎么写编译都不通过。
------解决方案--------------------
Start为虚,线程函数如果是类成员,则必须为static,然后可以把this作为参数传给线程函数
------解决方案--------------------
你这个用不着template吧,如楼上说的,虚函数就能搞定了。。。
------解决方案--------------------
------解决方案--------------------
就是线程的封装而已,大体如下:
假设基类是CFootballClub,派生出子类CItalyClub、CEnglandClub、CSpainClub,这些子类再分别派生出诸如CJuventus、CInterMilan、CManUtd、CArsenal、CBarcelona等等子类。。。。
现在想实现如下的工作,对于每个子类来说,调用它的Start函数的时候,都会启动一个ProcessThread线程,并返回pthread_t指针(供在它的WaitForFinish函数里面pthread_join用),在ProcessThread线程里面执行该子类的具体处理过程的Proces函数。
如果不想在每个子类里面都写一遍的话,那么在CFootballClub这个基类里面应该怎么写呢?
尝试用template,但是怎么写编译都不通过。
------解决方案--------------------
Start为虚,线程函数如果是类成员,则必须为static,然后可以把this作为参数传给线程函数
------解决方案--------------------
你这个用不着template吧,如楼上说的,虚函数就能搞定了。。。
------解决方案--------------------
------解决方案--------------------
就是线程的封装而已,大体如下:
- C/C++ code
class Thread { private: pthread_t tid; static void * s_run(void *data) //线程代码函数 { MouthTh *th=(MouthTh*)data; th->Proces(); } public: void start() { ProcessThread(); } virtual void Process() //工作函数 { //to do } void ProcessThread() { pthread_create(&tid,NULL,s_run,this); } };