免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1583 | 回复: 4
打印 上一主题 下一主题

[C++] 请教父类和子类问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-01 15:22 |只看该作者 |倒序浏览
本来3个线程是在一个类中开启的,现在改了代码,写了3个子类继承该父类,现在不清楚怎么在父类中启动线程了。请教
这是父类cm.h和cm.cpp中的内容
  1. class CM {
  2. public:
  3.         CManagerPing();
  4.         virtual ~CManagerPing();
  5. private:
  6.         int                         m_bthreadrunning;//线程是否运行
  7.         pthread_t         m_threadid;
  8.         pthread_t         m_threadidex;
  9. public:
  10.         void StartWorkThread();//启动工作线程
  11.         void StopWorkThread();//停止工作线程

  12.         /*void RunWorkThread();// 运行工作线程(本来是在父类中的,现在把它移到子类中了)
  13.         void WorkFunction(int m_CheckExPing);//工作函数
  14. };
复制代码
  1. void CM::StartWorkThread(){
  2.         m_bthreadrunning=1;
  3.         pthread_create(&m_threadid,NULL,ThreadForRun,this);
  4. }
  5. static void*ThreadForRun(void*arg){
  6.         CManagerPing*pManagerPing=(CManagerPing*)arg;
  7.         pManagerPing->RunWorkThread();                                   //这里这样写就肯定有问题了,不清楚这里该怎么改,肯定要调用子类中的RunWorkThread();
  8.         return arg;
  9. }
复制代码
接下来是子类
  1. class FM:public CM {
  2. private:
  3. //普通PING有关变量
  4.         LOCALIPLIST m_u;
  5.         SETSTRINGIP m_t;//发送队列
  6.         char                         m_m[16];
  7. public:
  8.         void RunWorkThread();//运行工作线程
  9.         void WorkFunction(int m_CheckExPing);//工作函数,是否特殊PING
复制代码
在子类中void RunWorkThread();已经实现,现在就是想问如何在父类中调到这个函数

论坛徽章:
0
2 [报告]
发表于 2015-12-01 15:43 |只看该作者
是不是这样的写法根本就不行,还是太简单了?大侠不愿意回答~应该看懂了吧

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2015-12-01 15:51 |只看该作者
父类中RunWorkThread 定义成纯虚函数

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
4 [报告]
发表于 2015-12-01 16:43 |只看该作者
c++有一种特性叫多态

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
5 [报告]
发表于 2015-12-02 09:38 |只看该作者
要了解下虚函数的原理和使用方法,再去做封装,否则你以后一定会遇到各种各样的问题。这个是虚函数的一个很常见的使用场景。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP