2017-01-07 3 views
0

У меня есть-структуру, как это:Как добавить элемент в QList в структуре?

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

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

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

n = new QVector<Nom>; 

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

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

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

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

У меня есть ошибки компиляции:

no matching member funtion for call to 'append'
candidate function not viable: 'this' argument has type 'const QList', but method is not marked const void append(const T &t);

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

ответ

0

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

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

+0

Спасибо за ваш ответ. Когда я заменяю 'n-> at (j)' на 'n [j]', я получаю другую компиляцию: erreur: no member с именем 'indNum' в 'QVector ' n [j] .indNum .append (i-> размер() - 1); ~~~~^ – arnaud1000

+0

Действительно. У меня сейчас нет компиляции. Большое спасибо. – arnaud1000

Смежные вопросы