как добавить элемент в QList в структуре?

У меня есть такая структура:

struct Nom {  
    QString Nom;  
    ....  
    QList<quint64> indNum;  
}  

В моем файле .h. Я объявляю:
QVector *n;

В моем файле .cpp. Я заявляю :

n = new QVector<Nom>;

Я прочитал файл, чтобы заполнить n. Когда я пишу это:

n->back().indNum.append(i->size()-1);  

это работает.
Когда я пишу это:

n->at(j).indNum.append(i->size()-1);  

У меня ошибка компиляции:

нет подходящей функции-члена для вызова 'append'
функция-кандидат нежизнеспособна: 'этот' аргумент имеет тип 'const QList', но метод не помечен как const void append(const T &t);

Я не понимаю, почему это работает в первом случае и во втором. Может ли кто-нибудь объяснить и помочь мне решить эту проблему? Заранее спасибо.


person arnaud1000    schedule 07.01.2017    source источник


Ответы (1)


QVector::at возвращает константную ссылку на значение Nom, поэтому вы не можете изменить элемент, возвращаемый n->at(j). Чтобы получить неконстантную ссылку, вы можете использовать (*n)[j].

n->back() работает, потому что для QVector::back есть константная и неконстантная перегрузки.

person E4z9    schedule 07.01.2017
comment
Спасибо за Ваш ответ. Когда я заменяю 'n-›at(j)' на 'n[j]', я получаю другую компиляцию: erreur: нет элемента с именем 'indNum' в 'QVector‹MainWindow::Nom›' n[j].indNum. добавить(i-›size()-1); ~~~~ ^ - person arnaud1000; 07.01.2017
comment
Конечно. Теперь у меня нет ошибки компиляции. Большое спасибо. - person arnaud1000; 07.01.2017