2017-04-01 1 views
2

Ein QList<T> lässt mich es mit einigen Einträgen initialisieren, die eine Initialisierungsliste verwenden.Kann QQueue mit Initialisiererliste nicht initialisieren

Doing das gleiche mit einem Queue<T> gibt mir einen Compiler-Fehler.

Beispiel-Code lässt sich nicht kompilieren:

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

Compiler Ausgabe:

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 

Gibt es eine Möglichkeit, einen QQueue<T> unter Verwendung einer Initialisierungsliste zu initialisieren?

Antwort

1

Seit QQueue erben von QList, fand ich einen Trick, um das zu tun.

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

jedoch in diesem Beispiel geben Sie es vorübergehend so, wenn Sie diese außerhalb auf die Funktion verwenden möchten, werden Sie neue verwenden müssen

+0

denken Sie, das ist eigentlich ein Fehler in qt ist oder der Compiler seit der Konstruktor sollte gleich bleiben? –

+0

Ich weiß nicht, ob es ein Fehler ist oder nicht. Durch das Lesen der ququue-Quelle erwartete ich eine Löschung des Konstruktors, aber das ist nicht der Fall. –

+0

Glaubst du, dass es sich lohnt, einen Fehler in qt's Bug-Tracker zu öffnen? –

Verwandte Themen