2017-04-01 44 views
2

QList<T>は、初期化リストを使用していくつかのエントリで初期化できます。QQueueを初期化子リストで初期化できません

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

QQueueQListから継承されているため、私はそれを行うためのトリックを発見しました。あなたは関数にこの外を使用したい場合は、

+0

新しいを使用する必要がありますので、

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(); } 

しかし、この例では、それは一時的なリストあなたは、これが実際以来、QTのバグやコンパイラだと思いますかコンストラクタは同じままにする必要がありますか? –

+0

バグかどうかわかりません。 qqueueのソースを読むことによって、私はコンストラクタの削除を見ることを期待しましたが、そうではありません。 –

+0

qtのバグトラッカーでバグを開く価値があると思いますか? –

関連する問題