2010-02-09 60 views
6

我在理解QList的一些行爲時遇到問題。指向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; 
} 

我得到的編譯錯誤在標線不能轉換「的QList」到「雙」的分配。它適用於我使用ABC = myList.at(i),但QT參考似乎說at()[] operator是同樣的事情。 有沒有人知道是什麼造成了差異?

感謝

回答

9

這是因爲operator[]應該適用於一個QList對象,但myList指針QList

嘗試

ABC = (*myList)[i]; 

代替。 (另外,正確的語法應myList->at(i)代替myList.at(i)。)

+0

是的我的意思是myList->在(i) - 在有問題的情況下輸入錯誤,感謝您的幫助。 – Moomin 2010-02-09 15:55:43

3

你可能意味着

ABC = (*myList)[i]; 
3

myList中是指向的QList因此,你應該在標有感嘆號線用它作爲(*myList)[i]。此外,您不能使用ABC = myList.at(i),您必須使用ABC = myList->at(i)