找回密码
 立即注册
收起左侧

虚函数

4
回复
7971
查看
[复制链接]
累计签到:4 天
连续签到:1 天
来源: 2013-11-11 19:07:23 显示全部楼层 |阅读模式
5Qter豆
首先表扬下,几天没来,功能增加不少。
好了,言归正传。我写了一个头文件sensor.h里面定义了虚函数
  1. class Qsensor {
  2. virtual void  checkCmd()=0;
  3. }
复制代码
然后ya.sensor.h
  1. class yasensor:public  Qsensor
  2. {
  3. void checkCmd();
  4. }
  5. class zasensor:public Qsensor
  6. {
  7. void checkCmd();
  8. }
复制代码
y.sensor.cpp
  1. void yasensor::checkCmd()
复制代码
z.sensor.cpp
  1. void zsensor::checkCmd()
复制代码
此时问题出现了,看下面
tcp.cpp
  1. void QTcpSocketThread::procHartSensorPkg()
  2. {
  3.     QSensor* sensor = sensorsVector.at(currentQueryIndx);//

  4.     if ( sensor->checkCmd( (Buf) )//如何调用zasensor中的checkCmd呢?原本没有class yasensor,运行良好。
  5.     {
  6.     sensor->parseValue( ( );
  7. }
复制代码

最佳答案

查看完整内容

你试试不要想太复杂,你新定义了什么类就 new什么类,自然就用这个新类的函数了。
回复

使用道具 举报

尚未签到

2013-11-11 19:07:24 显示全部楼层
liyingju001 发表于 2013-11-12 09:51
sensorsVector.append(sensor);  //怎么少最后这句最关键的了

你试试不要想太复杂,你新定义了什么类就 new什么类,自然就用这个新类的函数了。
回复

使用道具 举报

尚未签到

2013-11-11 22:55:33 显示全部楼层
好像你没有完全理解虚函数的概念?  请先看这里: http://zh.wikipedia.org/wiki/%E8%99%9A%E5%87%BD%E6%95%B0_(%E7%A8%8B%E5%BA%8F%E8%AF%AD%E8%A8%80)

说简单点就是子类没有重新定义这个函数的话,就执行父类的虚函数,定义了就执行子类的函数。
C++的概念很重要的,请务必弄懂。

点评

这个我看过了 我这份代码是在别人的代码上增加修改的。确实基础薄弱,也是情理之中。在tcp.app中还有一段代码  详情 回复 发表于 2013-11-12 09:49
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2013-11-12 09:49:04 显示全部楼层
Joey_Chan 发表于 2013-11-11 22:55
好像你没有完全理解虚函数的概念?  请先看这里: http://zh.wikipedia.org/wiki/%E8%99%9A%E5%87%BD%E6%95 ...

这个我看过了  我这份代码是在别人的代码上增加修改的。确实基础薄弱,也是情理之中。在tcp.app中还有一段代码
  1. void QTcpSocketThread::createSensors(QSqlQuery& query)
  2. {
  3.     QSensor* sensor = NULL;
  4.     while(query.next())
  5.     {
  6.         sensor = NULL;
  7.         QString strProto = query.value(6).toString();//
  8.         protocal = QSensor::protocalByName(strProto);
  9.         switch (protocal)
  10.         {
  11.   case QSensor::Y:
  12.         sensor = new ySensor();
  13.        break;
  14.         case QSensor::z:
  15.        sensor = new zSensor();
  16.        break;
  17.         default:
  18.             break;
  19.         }

  20.         if (sensor == NULL)
  21.             continue;
复制代码
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2013-11-12 09:51:31 显示全部楼层
sensorsVector.append(sensor);  //怎么少最后这句最关键的了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了