Q_DECLARE_METATYPE 的一个坑(有时候会现诡异编译错误)
来源:互联网 发布:k均值聚类算法实例 编辑:程序博客网 时间:2024/05/17 21:57
因为 Q_DECLARE_METATYPE 是一个宏。借用一句话:“宏是万恶之源”。什么恶呢?就是,如果它的参数当中有逗号",",会被当成参数分隔符。
所以,当你试图这么写:
Q_DECLARE_METATYPE(QMap<QString, bool>);
你就会发现编译不过,并且抓狂了。
解决方法嘛,当然很简单:参照Q_DECLARE_METATYPE的宏定义,自己把它展开,编译器就不会再犯傻了。
QT_BEGIN_NAMESPACEtemplate <>struct QMetaTypeId< QMap<QString, bool> >{ enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); if (!metatype_id) metatype_id = qRegisterMetaType< QMap<QString, bool> >("QMap<QString, bool>", reinterpret_cast< QMap<QString, bool> *>(quintptr(-1))); return metatype_id; }};QT_END_NAMESPACE
- Q_DECLARE_METATYPE 的一个坑(有时候会现诡异编译错误)
- maven 一个诡异的错误
- 编译kernel版本的时候有时候会多一个+号,例如4.9.0.rc3+,为什么会多一个+号呢?
- 诡异的C++ #define编译错误
- 一个粗心引起的诡异错误
- 记录一个诡异而简单的错误
- Git一个诡异错误的解决方法
- 解决运行JScript的一个诡异错误
- 关于gitignore的有时候会无效的一个新认知
- 解决BCG库示例程序中的一个诡异编译错误
- 现在为了让程序兼容vista,我们需要给程序加上一个manifest文件,可是有时候vc6它就会弹出Resource Compiler Error RC2170 的错误,可能是vc6一个bug,我个人对vc6还是很喜欢的,不过经常会有编译死掉或出错的问题,
- NullPoint问题,有时候会引起大错误
- 求诡异的编译链接错误2005的改正方法~~~
- HTML 字符实体(有时候会很有用的)
- 诡异的500错误
- 一个十分诡异的Hibernate Mapping文件XML校验错误
- 很诡异的一个测试~(转贴)
- 很诡异的一个测试~(转贴)
- 常用系统下载地址
- C语言和设计模式(建造者模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- c++栈的实现
- linux下安装VMware
- android 用PopupWindow实现漂浮按钮
- Q_DECLARE_METATYPE 的一个坑(有时候会现诡异编译错误)
- 注册页面的js验证 .
- C语言和设计模式(桥接模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- 心气
- UIGraphicsBeginImageContextWithOptions--生成透明的图形
- 2011华中科技大学研究生复试机试之一
- 由outfile将数字写入文件,再由infile将数字写到数组
- [Android]实现静默安装APK的两种方法
- XML是什么,它可以做什么?