2010-02-09 15 views
6

Ich habe Probleme mit QList Verhalten zu verstehen.Zeiger auf QList - bei() vs. [] -Operator

#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 Kompilierungsfehler kann nicht ‚QList‘ zu ‚double‘ in Zuordnung an markierten Linie konvertieren. Es funktioniert, wenn ich ABC = myList.at(i) verwende, aber QT-Referenz scheint zu sagen, dass at() und [] operator die gleiche Sache ist. Weiß jemand, was den Unterschied ausmacht?

Dank

Antwort

9

Das ist, weil operator[] auf ein QListObjekt angewendet werden sollte, aber myList ist ein Zeiger-QList.

Versuchen

ABC = (*myList)[i]; 

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

+0

ja ich meinte myList-> um (i) - Mistyping in Frage, danke für Hilfe. – Moomin

3

Sie haben wahrscheinlich

gemeint
ABC = (*myList)[i]; 
3

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