当前位置: 首页 > news >正文

解决关于使用dynamic_cast而导致的程序崩溃的现象

注意看这段代码:


bool KuGouApp::event(QEvent *event) {if(QEvent::HoverMove == event->type())//鼠标移动{const auto ev = dynamic_cast<QMouseEvent*>(event);this->mouseMoveEvent(ev);}return QWidget::event(event);
}

乍看之下没有问题,基类转派生类用dynamic_cast没毛病。那问题就大了。。。

使用dynamic_cast强制转换的前提条件是对于已知该基类确确实实指向该派生类类型,否则运行时会崩溃!!!而QMouseEvent只是多个派生类中的一个。。。

应该改为:


bool KuGouApp::event(QEvent *event) {if(QEvent::HoverMove == event->type())//鼠标移动{const auto ev = dynamic_cast<QMouseEvent*>(event);if(ev)this->mouseMoveEvent(ev);}return QWidget::event(event);
}

或者:


bool KuGouApp::event(QEvent *event) {if(QEvent::HoverMove == event->type())//鼠标移动{const auto ev = dynamic_cast<QMouseEvent*>(event);if(ev)this->mouseMoveEvent(ev);}return QWidget::event(event);
}


http://www.mrgr.cn/news/50877.html

相关文章:

  • ES-入门-javaApi-文档-新增-删除
  • 当代社恐青年的社交解药:跟AI唠嗑上瘾
  • Crawl4AI:用几行代码打造强大的网页爬虫
  • C++运算出现整型溢出
  • ros service不走是为什么
  • “我们为什么缺少科学精神”演讲内容拆解
  • live2d 实时虚拟数字人形象页面显示,对接大模型
  • 机器学习:知识蒸馏(Knowledge Distillation,KD)
  • HTTP状态码
  • java代码编译javac
  • 如何让c盘不是那么快速的红
  • 信创服务器下连接kingbase并执行SQL的脚本
  • 数据可视化-使用python制作词云图(附代码)
  • 植物大战僵尸杂交版之后新作:植物大战僵尸射击版(可在安卓手机上玩,文末附下载链接)
  • 活动报名丨实时互动AI 开发者年度聚会!RTE Open Day@RTE2024,10.25/26北京
  • IOS APP初体验-第1课:如何在Mac中真机调试
  • |动漫爬取|001_djangodjango基于Spark的国漫推荐系统的设计与实现2024_tpd6q1o4
  • onnx和tensorrt使用过程中的一些代码梯子
  • 单链表算法题(一)(超详细版)
  • 基于SpringBoot+Vue+MySQL的养老保险管理系统