【问题标题】:Bad calling of QList::push_back()QList::push_back() 的错误调用
【发布时间】:2015-01-13 15:47:58
【问题描述】:

我正在尝试在另一个 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,但我试图插入 @987654330 的 QList @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;
}

谢谢!

【问题讨论】:

  • 嗯,但您的 formula 列表需要 QList&lt;QString&gt; 作为元素,但您插入 QList&lt;QList&lt;QString&gt; &gt; 代替。我认为这个错误是合理的。

标签: c++ qt data-structures qlist


【解决方案1】:

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

尝试使用以下方法之一:

formula.append(partialFormula);

formula += partialFormula;

formula << partialFormula;

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

【讨论】:

    【解决方案2】:

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

    formula += partialFormula;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-24
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多