无法使用初始化列表初始化 QQueue
Cannot initialize QQueue with initializer list
A 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>
吗?
由于 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();
}
但是,在此示例中,将其临时列出,因此如果您想在函数外部使用它,则必须使用 new
A 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>
吗?
由于 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();
}
但是,在此示例中,将其临时列出,因此如果您想在函数外部使用它,则必须使用 new