2015-01-13 3 views
0

Я пытаюсь вставить QList в другой QList, но я получаю следующее сообщение об ошибке:Bad Призвание QList :: push_back()

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

Попытка нажать QList под названием partialFormula в другой QList называется формула:

formula.push_back(partialFormula); 

Я думаю, что моя ошибка в определении моих шаблонов QList, так как ожидаемое значение формулы QList является QList из QString, но я пытаюсь вставить QList от 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; 
} 

Спасибо!

+1

Hm, но ваш 'formula' список ожидает' 'QList как элемент, но вы вставите' QList < QList >. Я думаю, что ошибка разумная. – vahancho

ответ

1

Функция push_back существует только по причинам совместимости с STL и допускает только добавление переменных типа T в ваш случай QString. Посмотрите здесь: QT Doc

Попробуйте использовать один из следующих вариантов:

formula.append(partialFormula); 

или

formula += partialFormula; 

или

formula << partialFormula; 

или

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

Если вы хотите добавить еще один QList одного и того же типа, вы можете использовать += operator:

formula += partialFormula;