cannot convert from pointer to base class 'QObject' to pointer to derived class 'subClass' via virtual base 'baseClass'
2024-08-24 04:40:09
QT 编译不过的另一个问题:
1. 新建一个console工程
QT -= gui CONFIG += c++ console
CONFIG -= app_bundle # The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0. SOURCES += \
main.cpp \
baseclass.cpp \
subclass.cpp \
subclass2.cpp
#grandclass.cpp # Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target HEADERS += \
baseclass.h \
subclass.h \
subclass2.h
#grandclass.h
2. 添加baseClass
baseclass.h
#ifndef BASECLASS_H
#define BASECLASS_H #include "QObject" class baseClass: public QObject
{
Q_OBJECT public:
baseClass(QObject * p = );
virtual ~baseClass() {} virtual void vMethod(int) = ; signals:
void signal1(); }; #endif // BASECLASS_H
baseclass.cpp
#include "baseclass.h" baseClass::baseClass(QObject * p) : QObject(p)
{ }
3. 添加subClass
subclass.h
#ifndef SUBCLASS_H
#define SUBCLASS_H #include "baseclass.h" class subClass: virtual public baseClass
{
Q_OBJECT public:
subClass(QObject * p = );
virtual ~subClass() {};
virtual void vMethod(int) = ; signals:
void signal2(); }; #endif // SUBCLASS_H
subclass.cpp
#include "subclass.h" subClass::subClass(QObject * p) : baseClass (p)
{ }
4. 添加subClass2
subclass2.h
#ifndef SUBCLASS2_H
#define SUBCLASS2_H #include "baseclass.h" class subClass2 : virtual public baseClass
{
Q_OBJECT public:
subClass2(QObject * p = 0); virtual void vMethod(int) = ; }; #endif // SUBCLASS2_H
subclass2.cpp
#include "subclass2.h" subClass2::subClass2(QObject * p) : baseClass (p)
{ }
5 main.cpp
#include <QCoreApplication>
#include "subclass.h"
//#include "grandclass.h" int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv); //grandClass * sub = new grandClass(); return a.exec();
}
编译报错:/build-testQtSignalBug-Qt5_9_4_zynq-Debug/moc_subclass.cpp:68: error: cannot convert from pointer to base class 'QObject' to pointer to derived class 'subClass' via virtual base 'baseClass'
subClass *_t = static_cast<subClass *>(_o);
^
解决方法: 将subclass里的signals 删掉, 即不在subclass里声明信号量。
原因:不详。
最新文章
- 异步 HttpContext.Current 为空null 另一种解决方法
- cocos2d-x学习
- WPF学习之路(二) XAML
- IIS7 rename application or site
- Spark安装指南
- 【题解】【矩阵】【DP】【Leetcode】Minimum Path Sum
- 【zabbix系列】报警系统的设置和排除
- 关于hibernate的实体类中有集合类型转化成JSON的工具类 - 怀念今天的专栏 - 博客频道
- German Collegiate Programming Contest 2013:E
- rsyslogd配置文件详解
- centos7 python
- ubuntu18.04安装openresty
- jq 回车提交指定按钮
- 【RFT】【环境配置】Mac
- WIN10系统 如何自动调整系统时间
- sessionStorage 、localStorage、cookie
- 使用d3.v3插件绘制出svg图
- 在ubuntu16.04上搭建视频服务器
- 分别使用docx4j,jacob将文字与图片插入word中书签位置
- maven pom.xml配置
热门文章
- [CF666E]Forensic Examination:后缀自动机+线段树合并
- 安装python及其它
- sqli-labs(39)
- [CSP-S模拟测试]:硬币(博弈论+DP+拓展域并查集)
- C++入门经典-例2.9-输出十六进制数以及大写的十六进制数
- VUE生命周期demo
- NP-Hard问题和NP-Complete问题
- SpringBoot启动加载yml配置文件出现编码格式错误
- sqlserver2012语法
- 2.进行model和log的路径创建