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

error: C2039: “qt_metacast“: 不是 “***“ 的成员

报错信息:

error C2039: "qt_metacast": 不是 "radartrack::Base_track_data" 的成员

最近在使用Qt开发,自定义的数据类在继承数据抽象类和QObject类时总是报“qt_metacast 不是不是 "radartrack::Base_track_data" 的成员”。

数据描述:

抽象数据类:

//
// Created by qiaowei on 2023-12-17.
//#ifndef RADARDATACONTROLLER_BASE_TRACK_DATA_H
#define RADARDATACONTROLLER_BASE_TRACK_DATA_H#include <QObject>
#include <QString>namespace radartrack {/*********************************************************************************************** @copyright 2003-2023* @date      2023-12-18* @author    qiao wei* @version   1.0* @brief     雷达数据接口。* @history*********************************************************************************************/class Base_track_data {public:virtual void set_track_data(const QString& qstring_format_track_data) = 0;virtual QString qstring_format_track_data() = 0;virtual QMap<QString, QString>* qmap_format_track_data() = 0;};} // radartrack#endif //RADARDATACONTROLLER_BASE_TRACK_DATA_H

 

//
// Created by qiaowei on 2023-12-17.
//#include "base_track_data.h"namespace radartrack {
} // radartrack

数据类:

//
// Created by qiaowei on 2023-12-14.
//#ifndef RADARDATACONTROLLER_TRACK_DATA_H
#define RADARDATACONTROLLER_TRACK_DATA_H#include <QObject>
#include <QMap>
#include "base_track_data.h"using radartrack::Base_track_data;namespace radartrack {/*********************************************************************************************** @copyright 2003-2023* @date      2023-12-14* @author    qiao wei* @version   1.0* @brief     雷达数据类。以QString和QMap两种格式保存雷达数据,雷达数据类将读入的QString格式数据处理为*            QMap格式并保存。* @history*********************************************************************************************/class Track_data : public Base_track_data, public QObject {Q_OBJECTpublic:/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   Constructor。创建实例时传入QString格式雷达数据track_data和参数parent,调用函数,将*          QString格式雷达数据处理为QMap格式雷达数据并保存。* @param   qstring_format_track_data QString格式雷达数据。* @param   parent 父类参数。* @return* @throws*****************************************************************************************/explicit Track_data(QString qstring_format_track_data, QObject* parent = nullptr);/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   Copy constructor。* @param   right_value 赋值的TrackData变量。* @return* @throws*****************************************************************************************/explicit Track_data(const Track_data& right_value);/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   Assignment operator=。* @param   right_value 赋值的TrackData变量。* @return  赋值后的变量。* @throws*****************************************************************************************/Track_data& operator=(const Track_data& right_value);virtual ~Track_data() override;/******************************************************************************************* @date    2023-12-17* @author  qiao wei* @version 1.0* @brief   根据传入的字符串,设置QString格式雷达数据,QMap格式雷达数据。* @param   qstring_format_track_data 传入的QString格式雷达数据。* @return* @throws*****************************************************************************************/virtual void set_track_data(const QString& qstring_format_track_data);/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   返回QString格式雷达数据。* @param* @return  QString格式雷达数据。* @throws*****************************************************************************************/virtual QString qstring_format_track_data() const;/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   返回QMap格式雷达数据。* @param* @return  QMap格式雷达数据。* @throws*****************************************************************************************/virtual QMap<QString, QString>* qmap_format_track_data() const;private:/******************************************************************************************* @date    2023-12-17* @author  qiao wei* @version 1.0* @brief   根据传入的QString格式雷达数据,更新QMap格式雷达数据(如原雷达数据不为空,先删除过期*          的雷达数据)。* @param   qstring_format_track_data QString格式雷达数据。* @return* @throws*****************************************************************************************/void updateTrackDataInQMapByQString(const QString& qstring_format_track_data);private:/******************************************************************************************* @date   2023-12-14* @author qiao wei* @brief  字符串格式雷达数据。*****************************************************************************************/QString qstring_format_track_data_;/******************************************************************************************* @date   2023-12-17* @author qiao wei* @brief  分析后的雷达数据,保存在QMap类型中。*****************************************************************************************/QMap<QString, QString>* qmap_format_track_data_;};} // radartrack#endif //RADARDATACONTROLLER_TRACK_DATA_H

//
// Created by qiaowei on 2023-12-14.
//#include "track_data.h"
#include "constant_variable.h"using radartrack::kNone;
using radartrack::kTime;namespace radartrack {Track_data::Track_data(QString qstring_format_track_data,QObject* parent) :QObject(parent),qstring_format_track_data_{qstring_format_track_data},qmap_format_track_data_{new QMap<QString, QString>} {updateTrackDataInQMapByQString(qstring_format_track_data_);}Track_data::Track_data(const Track_data& right_value) {if (this != &right_value) {qstring_format_track_data_ = right_value.qstring_format_track_data_;updateTrackDataInQMapByQString(qstring_format_track_data_);}}Track_data& Track_data::operator=(const Track_data& right_value) {if (this == &right_value) {return *this;}qstring_format_track_data_ = right_value.qstring_format_track_data_;updateTrackDataInQMapByQString(qstring_format_track_data_);return *this;}Track_data::~Track_data() {// 释放实例变量的指针资源。delete qmap_format_track_data_;qmap_format_track_data_ = nullptr;}void Track_data::set_track_data(const QString& qstring_format_track_data) {// 更新QString格式和QMap格式的雷达数据。qstring_format_track_data_ = qstring_format_track_data;updateTrackDataInQMapByQString(qstring_format_track_data);}QString Track_data::qstring_format_track_data() const {return qstring_format_track_data_;}QMap<QString, QString>* Track_data::qmap_format_track_data() const {return qmap_format_track_data_;}void Track_data::updateTrackDataInQMapByQString(const QString& qstring_format_track_data) {// 获取文本格式的时间数据,将时间数据保存到map变量。QString data_time{qstring_format_track_data.mid(0, 8)};// 检查qmap_format_track_data_变量是否为空,如果不为空,使用clear函数清空数据。if (!qmap_format_track_data_->isEmpty()) {qmap_format_track_data_->clear();}qmap_format_track_data_->insert(kTime, data_time.trimmed());// 获取剩余的雷达数据。QStringList string_list = qstring_format_track_data.mid(11).split(",");QStringList key_value_group;// 遍历QString格式的雷达数据,保存到map变量中。QStringList::Iterator iterator = string_list.begin();while (string_list.end() != iterator) {if (iterator->contains("=")) {key_value_group = iterator->split("=");if (2 == key_value_group.count()) {if (key_value_group[1].isEmpty()) {key_value_group[1] = kNone;}// 将key/value保存到QMap中,去除数据的空格。将航班号的方括号去除。qmap_format_track_data_->insert(key_value_group[0].trimmed(),key_value_group[1].trimmed().replace("[", "").replace("]", ""));}}++iterator;}}} // radartrack

添加Q_OBJECT宏时在编译数据类时就出现了本文最开始的问题,去掉Q_OBJECT宏时可以成功编译。

原因分析:

导致错误的原因可能是多继承时,继承QObject并加入Q_OBJECT宏的时候,QT环境下在编译的时候会以第一个继承的对象(模板?)来生成对应的moc文件,如果带有Q_OBJECT宏,必须把QObject放在第一个继承的位置。

解决方案:

更换数据类Track_data的继承顺序为public QObject, public Base_track_data的位置,成功解决问题。更改后代码如下:

//
// Created by qiaowei on 2023-12-14.
//#ifndef RADARDATACONTROLLER_TRACK_DATA_H
#define RADARDATACONTROLLER_TRACK_DATA_H#include <QObject>
#include <QMap>
#include "base_track_data.h"using radartrack::Base_track_data;namespace radartrack {/*********************************************************************************************** @copyright 2003-2023* @date      2023-12-14* @author    qiao wei* @version   1.0* @brief     雷达数据类。以QString和QMap两种格式保存雷达数据,雷达数据类将读入的QString格式数据处理为*            QMap格式并保存。* @history*********************************************************************************************/class Track_data : public QObject, public Base_track_data {Q_OBJECTpublic:/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   Constructor。创建实例时传入QString格式雷达数据track_data和参数parent,调用函数,将*          QString格式雷达数据处理为QMap格式雷达数据并保存。* @param   qstring_format_track_data QString格式雷达数据。* @param   parent 父类参数。* @return* @throws*****************************************************************************************/explicit Track_data(QString qstring_format_track_data, QObject* parent = nullptr);/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   Copy constructor。* @param   right_value 赋值的TrackData变量。* @return* @throws*****************************************************************************************/explicit Track_data(const Track_data& right_value);/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   Assignment operator=。* @param   right_value 赋值的TrackData变量。* @return  赋值后的变量。* @throws*****************************************************************************************/Track_data& operator=(const Track_data& right_value);virtual ~Track_data() override;/******************************************************************************************* @date    2023-12-17* @author  qiao wei* @version 1.0* @brief   根据传入的字符串,设置QString格式雷达数据,QMap格式雷达数据。* @param   qstring_format_track_data 传入的QString格式雷达数据。* @return* @throws*****************************************************************************************/virtual void set_track_data(const QString& qstring_format_track_data);/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   返回QString格式雷达数据。* @param* @return  QString格式雷达数据。* @throws*****************************************************************************************/virtual QString qstring_format_track_data() const;/******************************************************************************************* @date    2023-12-14* @author  qiao wei* @version 1.0* @brief   返回QMap格式雷达数据。* @param* @return  QMap格式雷达数据。* @throws*****************************************************************************************/virtual QMap<QString, QString>* qmap_format_track_data() const;private:/******************************************************************************************* @date    2023-12-17* @author  qiao wei* @version 1.0* @brief   根据传入的QString格式雷达数据,更新QMap格式雷达数据(如原雷达数据不为空,先删除过期*          的雷达数据)。* @param   qstring_format_track_data QString格式雷达数据。* @return* @throws*****************************************************************************************/void updateTrackDataInQMapByQString(const QString& qstring_format_track_data);private:/******************************************************************************************* @date   2023-12-14* @author qiao wei* @brief  字符串格式雷达数据。*****************************************************************************************/QString qstring_format_track_data_;/******************************************************************************************* @date   2023-12-17* @author qiao wei* @brief  分析后的雷达数据,保存在QMap类型中。*****************************************************************************************/QMap<QString, QString>* qmap_format_track_data_;};} // radartrack#endif //RADARDATACONTROLLER_TRACK_DATA_H

相关文章:

error: C2039: “qt_metacast“: 不是 “***“ 的成员

报错信息&#xff1a; error C2039: "qt_metacast": 不是 "radartrack::Base_track_data" 的成员 最近在使用Qt开发&#xff0c;自定义的数据类在继承数据抽象类和QObject类时总是报“qt_metacast 不是不是 "radartrack::Base_track_data" 的成员…...

量子计算:开启IT领域的新时代

量子计算&#xff1a;开启IT领域的新时代 一、量子计算的基本原理与背景 量子计算作为一项前沿高级技术&#xff0c;正逐渐引起IT领域的广泛关注。传统计算机是通过二进制位&#xff08;0和1&#xff09;来储存和处理信息&#xff0c;而量子计算机则利用量子位或称为“量子比特…...

数据可视化---柱状图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…...

第十七章 爬虫scrapy登录与中间件2

文章目录 数据盘区太快会报错&#xff0c;setting中配置延迟 连接提取器...

运维知识点-Kubernetes_K8s

Kubernetes RBAC配置不当攻击场景攻击过程 RBAC配置不当 Service Account本质是服务账号&#xff0c;是Pod连接K8s集群的凭证。 在默认情况下&#xff0c;系统会为创建的Pod提供一个默认的Service Account&#xff0c; 用户也可以自定义Service Account&#xff0c;与Service…...

某电子文档安全管理系统存在任意用户登录漏洞

漏洞简介 某电子文档安全管理系统存在任意用户登录漏洞&#xff0c;攻击者可以通过用户名获取对应的cookie&#xff0c;登录后台。 资产测绘 Hunter语法&#xff1a;web.icon“9fd216c3e694850445607451fe3b3568” 漏洞复现 获取Cookie POST /CDGServer3/LinkFilterServi…...

音视频参数介绍

一、视频参数概念 单个视频帧&#xff1a;可以简单地理解成为一张图片 单个视频帧主要的参数概念&#xff1a; 分辨率&#xff1a; 分辨率是指图像或显示器上像素的数量&#xff0c;通常用横向像素数乘以纵向像素数表示。例如&#xff0c;1920x1080 表示宽度为1920像素&…...

vue中使用minio上传文件

创建一个 文件getOssClient import { getOssSetting } from "/api/common"; import Vue from "vue"; import { getCookies, getLocal } from "/utils/auth"; // get token from cookie export async function getStsToken() {//从后台获取stsTo…...

MySQL表的增删改查(初阶)

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。且增删改查&#xff08;CRUD&#xff0c;create&#xff0c;retrieve&#xff0c;update&#xff0c;delete&#xff09;数据库的核心模块。 1. 新增&#xff08;Create&#xff09; 实…...

搜维尔科技:关于“第九届元宇宙数字人设计大赛”线上+线下巡回宣讲本周高校行程通告!

为了让大家更全面地了解此次大赛&#xff0c;顺利地进行大赛的报名和参赛&#xff0c;组委会遴选了一批优秀讲师代表&#xff0c;组建了宣讲团&#xff0c;以线上线下的方式陆续开展巡回宣讲。宣讲兼顾不同学生群体的需求&#xff0c;结合在数字人设计制作的过程中常见的疑难点…...

Gemini 1.0:Google推出的全新AI模型,改变生成式人工智能领域的游戏规则!

Gemini 1.0&#xff1a;Google推出的全新AI模型&#xff0c;将改变生成式人工智能领域的游戏规则&#xff01; &#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 …...

excel打开并操作CAD(excel-vba实现)_另附:CAD打开excel

excelvba可实现调用cad应用程序&#xff0c;并通过excel内置api弹窗实现打开、另存CAD 文件&#xff08;cad-vba弹窗功能较为麻烦&#xff09;&#xff0c;代码如下&#xff08;在excel_vba环境下操作&#xff09;&#xff1a; Sub excel_vba打开另存并操作CAD文件() Dim cad …...

Prolist组件实现动态竖排展示

实现原理&#xff1a;主要是利用外层div属性display:"flex",overflowX: auto&#xff0c;配合内层prolist样式属性flex:"0 0 auto",overflowX:"auto",width:"350px",height:900&#xff0c;实现动态竖排展示 <div style{{display:…...

基于JAVA的海南旅游景点推荐系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…...

【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用

【Apache-StreamPark】Flink 开发利器 StreamPark 的介绍、安装、使用 1&#xff09;框架介绍与引入1.1.&#x1f680; 什么是 StreamPark1.2.&#x1f389; Features1.3.&#x1f3f3;‍&#x1f308; 组成部分1.4.引入 StreamPark 2&#xff09;安装部署2.1.环境要求2.2.Hado…...

【STM32】STM32学习笔记-LED闪烁 LED流水灯 蜂鸣器(06-2)

00. 目录 文章目录 00. 目录01. GPIO之LED电路图02. GPIO之LED接线图03. LED闪烁程序示例04. LED闪烁程序下载05. LED流水灯接线图06. LED流水灯程序示例07. 蜂鸣器接线图08. 蜂鸣器程序示例09. 下载10. 附录 01. GPIO之LED电路图 电路图示例1 电路图示例2 02. GPIO之LED接线图…...

docker服务启动报错docker.service holdoff time over, scheduling restart.

docker服务启动报错docker.service holdoff time over, scheduling restart. 卸载docker 卸载安装包 yum remove -y docker docker-client docker-client-latest docker-ce-cli docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinu…...

cfa一级考生复习经验分享系列(八)

先分析一下CFA Level 1内容&#xff0c;考试总体难度并不大&#xff0c;每门课程都比大学本科开设的对应课程简单&#xff0c;但是因为有十门课综合在一起&#xff0c;知识点相对算比较多&#xff0c;内容较多。但对知识点的掌握要求不高&#xff0c;理解即可。比如财报&#x…...

React中的事件处理

React中的事件处理 亲爱的同学们&#xff0c;今天我们将一起探索React中的一个非常实用的话题&#xff1a;事件处理。当我们谈论事件处理&#xff0c;我们指的是在用户与我们的应用程序交互时发生的各种情况&#xff0c;比如点击一个按钮或是提交一个表单。这些动作是我们如何让…...

德人合科技 | 公司电脑文件加密系统

公司电脑文件加密系统是一种可以对电脑文件进行加密的保护机制。它使用驱动层透明加密技术&#xff0c;能够在用户无感知的情况下对文件进行加密&#xff0c;从源头上保障数据安全和使用安全。 PC端访问地址&#xff1a; www.drhchina.com 此类系统主要有以下几个特点和功能&a…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技

无需布线的革命&#xff1a;电力载波技术赋能楼宇自控系统 在楼宇自动化领域&#xff0c;传统控制系统依赖复杂的专用通信线路&#xff0c;不仅施工成本高昂&#xff0c;后期维护和扩展也极为不便。电力载波技术&#xff08;PLC&#xff09;的突破性应用&#xff0c;彻底改变了…...