6

我在理解一些 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”转换为“double”。它在我使用时有效ABC = myList.at(i),但 QT 参考似乎是这样说的,at()而且[] operator是一回事。有人知道有什么区别吗?

谢谢

4

3 回答 3

9

那是因为operator[]应该应用于一个QList 对象,但myList它是一个指向.QList

尝试

ABC = (*myList)[i];

反而。(另外,正确的语法应该是myList->at(i),而不是myList.at(i)。)

于 2010-02-09T15:53:13.847 回答
3

你可能是说

ABC = (*myList)[i];
于 2010-02-09T15:52:57.063 回答
3

myList 是指向 QList 的指针,因此您应该(*myList)[i]在标有感叹号的行中使用它。另外,你不能使用ABC = myList.at(i),你必须使用 ABC =myList->at(i)

于 2010-02-09T15:54:16.217 回答