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

Спасибо

6
задан Moomin 9 February 2010 в 15:48
поделиться

3 ответа

Это потому, что оператор [] должен применяться к объекту QList , но myList является указатель на QList .

Попробуйте вместо этого

ABC = (*myList)[i];

. (Кроме того, правильный синтаксис должен быть myList-> at (i) вместо myList.at (i) .)

9
ответ дан 8 December 2019 в 16:02
поделиться

myList - это указатель на QList, поэтому вы должны использовать его как (* myList) [i] в строке, отмеченной восклицательными знаками. Кроме того, вы не можете использовать ABC = myList.at (i) , вы должны использовать ABC = myList-> at (i)

3
ответ дан 8 December 2019 в 16:02
поделиться

Вы, вероятно, имели в виду

ABC = (*myList)[i];
3
ответ дан 8 December 2019 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: