指向QList的指针 - at()与[]运算符

时间:2010-02-09 15:48:13

标签: c++ qt qt4 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'转换为'double'。它在我使用ABC = myList.at(i)时有效,但QT参考似乎表明at()[] operator是一回事。 有人知道有什么区别吗?

由于

3 个答案:

答案 0 :(得分:9)

这是因为operator[]应该应用于QList 对象,但是myList是{strong>指针到QList }。

尝试

ABC = (*myList)[i];

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

答案 1 :(得分:3)

你可能意味着

ABC = (*myList)[i];

答案 2 :(得分:3)

myList是指向QList的指针,因此您应该在标有感叹号的行中将其用作(*myList)[i]。此外,您无法使用ABC = myList.at(i),您必须使用ABC = myList->at(i)