Frage

Ich habe Probleme mit einigen Verhalten QList zu verstehen.

#include <QList>
#include <iostream>
using namespace std;

int main()
{
    QList<double> *myList;

    myList = new QList<double>;
    double myNumber;
    double ABC;

    for (int i=0; i<1000000; i++)
    {
        myNumber = i;
        myList->append(myNumber);
        ABC = myList[i]; //<----------!!!!!!!!!!!!!!!!!!!
        cout << ABC << endl;
    }

    cout << "Done!" << endl;
    return 0;
}

Ich erhalte Kompilierungsfehler nicht konvertieren kann ‚QList‘ zu ‚double‘ in Zuordnung an der markierten Linie. Es funktioniert, wenn ich ABC = myList.at(i) verwenden, aber QT Referenz scheint, dass at() zu sagen und [] operator ist elbe. Weiß jemand, was macht den Unterschied?

Danke

War es hilfreich?

Lösung

Das ist, weil operator[] auf eine QList angewendet werden sollte Objekt , aber myList ist ein Zeiger zu QList.

Versuchen

ABC = (*myList)[i];

statt. (Auch sollte die korrekte Syntax myList->at(i) statt myList.at(i) sein.)

Andere Tipps

Sie haben wahrscheinlich gemeint

ABC = (*myList)[i];

myList ist ein Zeiger auf QList deshalb sollten Sie es als (*myList)[i] in der mit Ausrufezeichen markierten Linie verwenden. Sie können aber auch nicht ABC = myList.at(i) verwenden, müssen Sie ABC verwenden = myList->at(i)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top