QList::push_back() 调用错误

Bad calling of QList::push_back()

我试图在另一个 QList 中插入一个 QList,但出现以下错误:

parser.y:40: error: no matching function for call to 'QList<QList<QString> >::insert(QList<QList<QString> >&)'

正在尝试将名为 partialFormula 的 QList 推入另一个名为 formula 的 QList:

formula.push_back(partialFormula);

我认为我的错误在于我的 QList 模板的定义,因为公式 QList 的预期值是 QStringQList,但我正在尝试插入 QList of QList of QString.

QList<QList<QString> > formula;
QList<QList<QString> > partialFormula;
formula.push_back(partialFormula); //error.

此外,我想在 partialFormula 中插入另一个 QList >,依此类推...,我必须创建 class 还是 struct

我该怎么做才能做到这一点?

我的代码:

#include <QList>
#include <QString>

int main () {
    QList<QList<QString> > formula;
    QList<QList<QString> > partialFormula;
    QList<QString> atomicCondition;

    //It works!
    partialFormula.push_back(atomicCondition);
    //It does not work.
    formula.push_back(partialFormula);

    return 0;
}

谢谢!

push_back 函数仅出于 STL 兼容性原因而存在,并且在您的情况 QString 中仅接受附加类型 T 的变量。看看这里:QT Doc

尝试使用以下方法之一:

formula.append(partialFormula);

formula += partialFormula;

formula << partialFormula;

formula.insert(formula.size(), partialFormula);

如果你想追加另一个相同类型的QList,你可以使用+= operator:

formula += partialFormula;