Приложение QT с функцией QList <QString>"append" - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь вернуть список совпадений, возвращенных из QRegularExpression, в QList с этим кодом ниже:

QList<QString> list();
QString str ("something by the way");
QRegularExpression reA("pattern");
QRegularExpressionMatchIterator i = reA.globalMatch(str);

while (i.hasNext()) {
    QRegularExpressionMatch match = i.next();
    if (match.hasMatch()) {
        list.append(match.captured(0));
    }
}

return list;

... Но он показывает мне эти ошибки:

/home/path/.../file:line# error: request for member 'append' in 'list', which is of non-class type 'QList<QString>()'
         list.append(match.captured(0));

/home/path/.../file:line#: error: could not convert 'list' from 'QList<QString> (*)()' to 'QList<QString>'
 return list;

Как я могу заставить его работать, я пытался привести к разным типам.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

попробуйте следующий код, пожалуйста:

QList<QString> list;
QString str ("something by the way");
QRegularExpression reA("pattern");
QRegularExpressionMatchIterator i = reA.globalMatch(str);

while (i.hasNext()) {
    QRegularExpressionMatch match = i.next();
    if (match.hasMatch()) {
        list.append(match.captured(0));
    }
}

return list;

Поскольку существует возможность перегрузить оператор, такой как () в c ++, для вашего компилятора очень сложно сделать различие между конструктором без параметров и оператором скобок,Поэтому, если вы хотите вызвать конструктор без аргументов, не ставьте круглые скобки Qlist<QString> myList;.

. Вы можете ставить круглые скобки только при использовании оператора New QList<QString> *myList = new QList<QString>().

Оператор круглых скобок используется для создания вызываемых объектов в C ++, если вы хотите узнать больше об этом, вы можете посмотреть по этой ссылке

0 голосов
/ 29 мая 2018
QList<QString> list();

Это на самом деле функция.Для переменной вы должны опустить круглые скобки;но это сбивает с толку, так как обычно вы используете скобки для передачи аргументов конструктору.

Это должно быть:

QList<QString> list;
// or
QList<QString> list{};
...