无法使用初始化列表初始化QQueue

时间:2017-04-01 11:46:08

标签: c++ qt qlist

QList<T>允许我使用初始值列表初始化一些条目。

Queue<T>执行相同的操作会给我一个编译错误。

示例代码无法编译:

QList<qreal> someNumbers { 0.0, 0.1 };
QQueue<qreal> someOtherNumbers { 0.0, 0.1 };

编译器输出:

error: no matching function for call to 'QQueue<double>::QQueue(<brace-enclosed initializer list>)'
     QQueue<qreal> someOtherNumbers { 0.0, 0.1 };
                                               ^
qqueue.h:49:7: note: candidate: QQueue<double>::QQueue()
 class QQueue : public QList<T>
       ^
qqueue.h:49:7: note:   candidate expects 0 arguments, 2 provided
qqueue.h:49:7: note: candidate: QQueue<double>::QQueue(const QQueue<double>&)
qqueue.h:49:7: note:   candidate expects 1 argument, 2 provided
qqueue.h:49:7: note: candidate: QQueue<double>::QQueue(QQueue<double>&&)
qqueue.h:49:7: note:   candidate expects 1 argument, 2 provided

有没有办法使用初始化列表初始化QQueue<T>

1 个答案:

答案 0 :(得分:1)

由于QQueue继承自QList,我找到了一个诀窍。

QQueue<double> *queue;
QList<double> list = {{0.0, 1.1}};
queue = reinterpret_cast<QQueue<double> *>(&list);
qDebug() << queue->isEmpty();
while (!queue->isEmpty()) {
    qDebug() << queue->dequeue();
}

然而,在这个例子中,列出它是临时的,所以如果你想在函数外使用它,你将不得不使用新的