2010-02-09 14 views
6

Mam problem ze zrozumieniem niektórych zachowań QList.Wskaźnik do QList - at() 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; 
} 

otrzymuję błąd kompilacji nie można przekonwertować „qlist” do „double” w przypisania w zaznaczonej linii. Działa, gdy używam ABC = myList.at(i), ale odnośnik QT wydaje się mówić, że at() i [] operator to to samo. Czy ktoś wie, co robi różnicę?

Dzięki

Odpowiedz

9

To dlatego operator[] powinny być stosowane do QListobiektu, ale myList jest wskaźnik do QList.

Spróbuj

ABC = (*myList)[i]; 

zamiast. (Również, poprawna składnia powinna być myList->at(i) zamiast myList.at(i).)

+0

tak miałem na myśli myList-> at (i) - mistyping w pytaniu, dzięki za pomoc. – Moomin

3

Prawdopodobnie oznaczało

ABC = (*myList)[i]; 
3

myList jest wskaźnikiem do qlist dlatego należy go używać jako (*myList)[i] w wierszu oznaczone wykrzyknikami. Ponadto, nie możesz użyć ABC = myList.at(i), musisz użyć ABC = myList->at(i)