Указатель на QList - at() против оператора []
У меня проблемы с пониманием некоторых действий 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 ответа
Решение
Это потому что operator[]
следует применять к QList
объект, но myList
это указатель на QList
,
Пытаться
ABC = (*myList)[i];
вместо. (Кроме того, правильный синтаксис должен быть myList->at(i)
вместо myList.at(i)
.)
myList - это указатель на QList, поэтому вы должны использовать его как (*myList)[i]
в строке, отмеченной восклицательными знаками. Кроме того, вы не можете использовать ABC = myList.at(i)
, вы должны использовать ABC = myList->at(i)