【发布时间】:2012-11-07 13:25:17
【问题描述】:
所以主题行中提到的代码会导致 Qt 4.8.3 和 gcc 4.7.2 出现分段错误
它位于 .cpp 文件的任何类/结构之外,适用于 gcc 4.4
const QList<int> warnings = QList<int>() << 0 << 3 << 7;
Traces 给出了这两个提示:
__do_global_ctors()
__static_initialization_and_destruction_0
因此,在将后一个列表插入其中时,“警告”似乎还不可用。
如果我将其更改为 4.7.2,则可以使用:
global scope: QList< int> warnings;
这是一些功能:
warnings = QList<int>() << 0 << 3;
我想知道为什么会这样?
编辑:
我想我最初从我的问题中剪掉了太多东西,但是警告应该是文件范围(.cpp-file)中的 const 用于保存一堆枚举。
【问题讨论】:
-
这看起来很简单。表达式被解析为
const QList<int> warnings = (QList<int>() << 0 << 3 << 7);,对吗? -
另外,
const QList<int> warnings = QList<int> << 0 << 3 << 7;呢? (没有括号可以调用构造函数。) -
这和写
int i = int << 1;差不多一样不会编译。 -
确实我仍然想知道how can one achieve that 使用临时对象..
-
用冒号结束类定义? ideone.com/dVFBWf :)