簡體   English   中英

使用QList的QT應用程序 <QString> 功能“附加”

[英]QT application with QList<QString> function “append”

我正在嘗試使用以下代碼返回從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;

我怎樣才能使它工作,我試圖投入多種類型。

請嘗試以下代碼:

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 ++中重載諸如()運算符,所以編譯器在沒有參數和括號運算符的構造函數之間產生差異是非常復雜的。 因為如果你想調用一個沒有任何args的構造函數,就不要把括號Qlist<QString> myList;

在使用New運算符QList<QString> *myList = new QList<QString>()時,只能放括號。

括號運算符用於在C ++中創建可調用對象,如果您想了解更多關於它的信息,可以查看此鏈接

QList<QString> list();

它實際上是一個功能。 對於變量,您必須省略括號; 但這很令人困惑,因為你通常使用括號將參數傳遞給構造函數。

它應該是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM