Pointeur vers QList - à () par rapport à l'opérateur []
Question
Je vais avoir un problème de compréhension de certains comportements QList.
#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;
}
J'obtiens l'erreur de compilation ne peut pas convertir « QList » à « double » dans l'affectation à la ligne marquée. Il fonctionne quand j'utilise ABC = myList.at(i)
, mais la référence QT semble dire que at()
et [] operator
est la même chose.
Quelqu'un sait-il ce qui fait la différence?
Merci
La solution
En effet, operator[]
devrait être appliquée à un QList
objet , mais myList
est un pointeur pour QList
.
Essayez
ABC = (*myList)[i];
au lieu. (En outre, la syntaxe correcte doit être myList->at(i)
au lieu de myList.at(i)
.)
Autres conseils
Vous avez probablement voulu dire
ABC = (*myList)[i];
myList est un pointeur sur QList vous devez donc l'utiliser comme (*myList)[i]
dans la ligne marquée par des points d'exclamation. En outre, vous ne pouvez pas utiliser ABC = myList.at(i)
, vous devez utiliser ABC = myList->at(i)