2010-02-09 34 views
6

Tôi gặp sự cố khi hiểu một số hành vi của QList.Con trỏ tới QList - tại() so với toán tử []

#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; 
} 

tôi nhận được biên soạn lỗi không thể chuyển đổi ‘QList’ thành ‘đôi’ trong phân tại dòng rõ rệt. Nó hoạt động khi tôi sử dụng ABC = myList.at(i), nhưng tham chiếu QT dường như nói rằng at()[] operator là giống nhau. Có ai biết điều gì tạo ra sự khác biệt?

Cảm ơn

Trả lời

9

Đó là bởi vì operator[] nên được áp dụng cho một QListđối tượng, nhưng myList là một con trỏ -QList.

Hãy thử

ABC = (*myList)[i]; 

để thay thế. (Ngoài ra, cú pháp chính xác nên được myList->at(i) thay vì myList.at(i).)

+0

có nghĩa là myList-> at (i) - mistyping được đề cập, cảm ơn bạn đã trợ giúp. – Moomin

3

Bạn đã có thể có nghĩa là

ABC = (*myList)[i]; 
3

myList là một con trỏ đến QList do đó bạn nên sử dụng nó như (*myList)[i] trong dòng được đánh dấu bằng dấu chấm than. Ngoài ra, bạn không thể sử dụng số ABC = myList.at(i), bạn phải sử dụng ABC = myList->at(i)

Các vấn đề liên quan