我在理解一些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
是一回事。
有人知道有什么区别吗?
由于
答案 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)