• 5021阅读
  • 3回复

[原创]QList跟std::tuple在VS2012下犯忌讳……? [复制链接]

上一主题 下一主题
离线roywillow
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-30
朋友里一段代码用到了QList<std::tuple<QString, QString, quint64> >这种数据类型,但是我拿到VC2012下编译的时候这段代码狂报错:
  1. E:\Qt5.1.1-MSVC2012-x64\include\QtCore\qtypeinfo.h:65: 错误:C2027: 使用了未定义类型“std::tuple<<unnamed-symbol>,_V0_t,_V1_t>”
  2. with
  3. [
  4.     <unnamed-symbol>=QString,
  5.     _V0_t=QString,
  6.     _V1_t=quint64
  7. ]
  8. ..\..\Qt5.1.1-MSVC2012-x64\include\QtCore/qlist.h(418): 参见对正在编译的类 模板 实例化“QTypeInfo<T>”的引用
  9. with
  10. [
  11.     T=MemberSection
  12. ]
  13. ..\..\Qt5.1.1-MSVC2012-x64\include\QtCore/qlist.h(417): 编译类 模板 成员函数“void QList<T>::node_destruct(QList<T>::Node *,QList<T>::Node *)”时
  14. with
  15. [
  16.     T=MemberSection
  17. ]
  18. ..\..\Qt5.1.1-MSVC2012-x64\include\QtCore/qlist.h(762): 参见对正在编译的函数 模板 实例化“void QList<T>::node_destruct(QList<T>::Node *,QList<T>::Node *)”的引用
  19. with
  20. [
  21.     T=MemberSection
  22. ]
  23. ..\..\Qt5.1.1-MSVC2012-x64\include\QtCore/qlist.h(760): 编译类 模板 成员函数“void QList<T>::dealloc(QListData::Data *)”时
  24. with
  25. [
  26.     T=MemberSection
  27. ]
  28. ..\..\Qt5.1.1-MSVC2012-x64\include\QtCore/qlist.h(737): 参见对正在编译的函数 模板 实例化“void QList<T>::dealloc(QListData::Data *)”的引用
  29. with
  30. [
  31.     T=MemberSection
  32. ]
  33. ..\..\Qt5.1.1-MSVC2012-x64\include\QtCore/qlist.h(735): 编译类 模板 成员函数“QList<T>::~QList(void)”时
  34. with
  35. [
  36.     T=MemberSection
  37. ]
  38. .\main.cpp(14): 参见对正在编译的函数 模板 实例化“QList<T>::~QList(void)”的引用
  39. with
  40. [
  41.     T=MemberSection
  42. ]
  43. .\main.cpp(14): 参见对正在编译的类 模板 实例化“QList<T>”的引用
  44. with
  45. [
  46.     T=MemberSection
  47. ]

我也确实知道VC2012对c++11的支持很渣,但是至少tuple单独使用是没问题的,但是没想到碰到QList就完蛋了。这个算不算Qt的一个bug呢?有没有什么解决方法(哪怕是改Qt代码)?
环境Qt版本5.1.1,VS2012 update3,Windows8 Pro
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 1楼 发表于: 2013-08-31
为啥不用list?
还有可以看我的第一个帖子,当时折腾够呛,就是STL的list和Qt的QString有冲突。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 2楼 发表于: 2013-09-01
回 1楼(jdwx) 的帖子
用std::list< tuple<XXXXX> >和std::vector< tuple<XXXXX> >试了一下一样编译不通
tuple中的那俩QString真心不能再换了啊……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线bingyifeng

只看该作者 3楼 发表于: 2013-09-01
楼主可以试下添加:
#include <tuple>

<span style="color:blue ">淘宝,绿石斋</span> <a href="http://shop33295817.taobao.com“> <span style="color:blue ">各种水晶饰品,手链,项链 </span></a>
快速回复
限100 字节
 
上一个 下一个