当前位置:网站首页>Qt报错:错误 C2039 “Value“: 不是 “`global namespace‘“ 的成员
Qt报错:错误 C2039 “Value“: 不是 “`global namespace‘“ 的成员
2022-07-23 03:13:00 【妙为】
Qt系列文章目录
前言
最近写Qt信号槽发现编译报错:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2039 “Value”: 不是 “global namespace'" 的成员 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79 错误 C2039 "Car": 不是 "QtPrivate::List<>" 的成员 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79 错误 C2039 "Cdr": 不是 "QtPrivate::List<>" 的成员 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79 错误 C2039 "Value": 不是 "QtPrivate::List_Left<QtPrivate::List<>,1>" 的成员 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 243 错误 C2039 "Value": 不是 "global namespace’” 的成员 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79
错误 C2338 Signal and slot arguments are not compatible. (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 232
错误 C2338 The slot requires more arguments than the signal provides. (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 230
错误 C2664 “QMetaObject::Connection QObject::connectImpl(const QObject *,void **,const QObject *,void **,QtPrivate::QSlotObjectBase *,Qt::ConnectionType,const int *,const QMetaObject *)”: 无法将参数 5 从“unknown-type ”转换为“QtPrivate::QSlotObjectBase ” (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 241
消息 与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 244
消息 参见“QObject::connectImpl”的声明 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 463
消息 参见“QtPrivate::List<>”的声明 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 81
消息 参见“QtPrivate::List<>”的声明 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 81
消息 参见“QtPrivate::List_Left<QtPrivate::List<>,1>”的声明 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 243
错误(活动) E0147 声明与 “void WndTrajectories::on_addTrajKeyPoint()” (已声明 所在行数:44,所属文件:“E:\OSG\WORK\MDI20220530\MDI\WndTrajectories.h”) 不兼容 mdi E:\osg\work\mdi20220530\mdi\WndTrajectories.cpp 253
错误 C2238 意外的标记位于“;”之前 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79
错误 C2062 意外的类型“unknown-type” (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79
消息 查看对正在编译的 类 模板 实例化“QtPrivate::List_Left<QtPrivate::List<>,1>”的引用 (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 243
消息 查看对正在编译的函数 模板 实例化“QMetaObject::Connection QObject::connect<void(__cdecl OsgWindow:: )(void),void(__cdecl WndTrajectories:: )(QString)>(const OsgWindow *,Func1,const WndTrajectories *,Func2,Qt::ConnectionType)”的引用 mdi E:\osg\work\mdi20220530\mdi\WndTrajectories.cpp 39
错误 C2146 语法错误: 缺少“>”(在标识符“Car”的前面) (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79
错误 C2146 语法错误: 缺少“>”(在标识符“Cdr”的前面) (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobjectdefs_impl.h 79
错误 C2146 语法错误: 缺少“>”(在标识符“Value”的前面) (编译源文件 WndTrajectories.cpp) mdi D:\Qt\Qt5.7.0\5.7\msvc2015_64\include\QtCore\qobject.h 243

一、分析报错原因
根据报错信息初步推算是:Qt信号槽连接语句出错。所以从相关的信号槽分析。
相关类描述:
第一个类:WndTrajectories:最外层工具窗口类,负责界面上的各种工具条,移动、旋转、缩放等按钮,控制三维物体。
第二个类:OsgWindow:中介类,由于类WndTrajectories无法直接和三维渲染窗口类交互,OsgWindow管理渲染窗口类
第三个类:FastView:三维渲染窗口
需求是:当用户在FastView三维渲染窗口操作时,比如移动、旋转、缩放三维物体,WndTrajectories类:最外层工具窗口类要实时响应三维窗口变化,比如提示用户三维物体移动了10米,绕x轴旋转的90度,缩放了2倍等等信息。
设计思想:三维窗口FastView操作时会发出信号(void renderAddTrajKeyPoint();),这个信号连接到OsgWindow的信号(void msg_trajKeyPoint();),然后最外层窗口WndTrajectories用OsgWindow类的msg_trajKeyPoint信号和自己的槽函数(on_addTrajKeyPoint)连接,下面是具体实现类
//信号
class WndTrajectories :public QDockWidget
{
Q_OBJECT
//槽
private slots:
void on_addTrajKeyPoint(QString fileName);
}
//连接信号和槽
connect(OsgWindow::GetInstance(), &OsgWindow::msg_trajKeyPoint, this, &WndTrajectories::on_addTrajKeyPoint);
第二个类:OsgWindow
class OsgWindow :public QObject
{
Q_OBJECT
//信号
Q_SIGNALS:
void msg_trajKeyPoint();
private:
FastView* m_RenderWindow = nullptr;
}
//连接函数
connect(m_RenderWindow, &FastView::renderAddTrajKeyPoint, this, &OsgWindow::msg_trajKeyPoint);
//槽函数
第三个类:FastView
class FastView : public QMainWindow, CDPEngineListener
{
Q_OBJECT
//信号
signals:
void renderAddTrajKeyPoint();
聪明的你也许一眼就看出来,槽函数的参数比信号还多,所以就报错了,但是当程序非常庞大,而且涉及到3个相关类,信号连接信号,信号又和槽关联,真的容易懵圈,我是花了一整天的时间才找出问题,想想真是蓝受香菇啊。。。。。。说出来都是泪呀。。。。。。。
问题解决
把void on_addTrajKeyPoint(QString fileName);
改成
on_addTrajKeyPoint()
边栏推荐
猜你喜欢

九张图纵观加密市场周期规律

STM32——输入捕获实验

spark分区算子partitionBy、coalesce、repartition

I changed my career as a programmer at the age of 31. Now I'm 34. Let me talk about my experience and some feelings

Ten years of sharpening a sword, the core technology evolution of the cloud native distributed database polardb-x

This is how the permission system is designed, yyds

权限系统就该这么设计,yyds

Spark 内存管理机制 新版

在Unity中使用Tessellation

数据库安全性和数据的完整性
随机推荐
九张图纵观加密市场周期规律
用现代化的开发方法和思维,打跑遗留系统“拦路虎”
kali下安装go环境
华泰证券可以网上开户吗安全吗
数学向量基本知识
leetcode 1074. Number of Submatrices That Sum to Target(和为target的子矩阵个数)
笔记——记录一个dynamic-datasource please check the setting of primary 问题解决
清华、AIR、腾讯 | 3D等变分子图预训练
拓扑排序 & 关键路径
《nlp入门+实战:第一章:深度学习和神经网络》
three文档使用
es6相关面试题3
Comprehensive summary of software quality management practice
webshell管理工具及其流量特征分析
华泰证劵开户有骗局吗安全吗
How can a platform enterprise solve the business of ledger accounting?
想放弃软件测试了,4年经验去面试10分钟结束,测试现在这么难了?
图文并茂演示小程序movable-view的可移动范围
IDM最新版软件的安装下载和使用方法
Reverse pairs in an array