带有QList <QString>函数的QT应用程序"追加"

Sha*_*nks 3 c++ qt qregularexpression

我正在尝试使用以下代码返回从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;
Run Code Online (Sandbox Code Playgroud)

...但它告诉我这个错误:

/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;
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它工作,我试图投入多种类型.

小智 5

请尝试以下代码:

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;
Run Code Online (Sandbox Code Playgroud)

因为有可能()在c ++中重载运算符,所以编译器在没有参数和括号运算符的构造函数之间产生差异是非常复杂的.因此,如果你想调用一个没有任何args的构造函数,就不要加括号Qlist<QString> myList;.

使用New运算符时,只能放括号QList<QString> *myList = new QList<QString>().

括号运算符用于在C++中创建可调用对象,如果您想了解更多关于它的信息,可以查看此链接