2010-02-09 2 views
6

Je n'arrive pas à comprendre certains comportements QList.Pointeur vers l'opérateur QList - at() vs []

#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'attribution à la ligne marquée. Cela 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. Est-ce que quelqu'un sait ce qui fait la différence?

Merci

Répondre

9

C'est parce que operator[] doit être appliqué à un objet QList, mais myList est un pointeur -QList.

Essayez

ABC = (*myList)[i]; 

à la place. (En outre, la syntaxe correcte doit être myList->at(i) au lieu de myList.at(i).)

+0

oui je voulais dire myList-> at (i) - mistyping en question, merci pour l'aide. – Moomin

3

Vous avez probablement voulu dire

ABC = (*myList)[i]; 
3

myList est un pointeur vers QList donc vous devriez 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)

Questions connexes