У меня есть проблема с пониманием части поведения 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’ для 'удваиваний' в присвоении в отмеченной строке. Это работает, когда я использую ABC = myList.at(i)
, но спокойная ссылка, кажется, говорит это at()
и [] 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)