Zeiger auf QList - bei () vs. Operator []
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
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)