2017-01-07 72 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值的const引用,因此您無法修改n->at(j)返回的項目。要獲得非常量參考,您可以使用(*n)[j]

n->back()工作原因是因爲對於QVector::back有一個const和一個非const超載。

+0

感謝您的回答。當我在'(j)'中用'n [j]'替換'n - '時,我得到另一個編譯:erreur:'QVector '中沒有​​名爲'indNum'的成員' n [j] .indNum .append(I->尺寸() - 1); ~~~~^ – arnaud1000

+0

確實。我現在沒有任何編譯錯誤。非常感謝。 – arnaud1000