具有 QList<QString> 函数 "append" 的 QT 应用程序
QT application with QList<QString> function "append"
我正在尝试 return 从 QRegularExpression 到 QList 的匹配列表 return,代码如下:
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();
其实是一个函数。对于变量,您必须省略括号;但这很令人困惑,因为您通常使用括号将参数传递给构造函数。
应该是:
QList<QString> list;
// or
QList<QString> 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++ 中可以重载 ()
等运算符,因此编译器很难区分不带参数的构造函数和括号运算符。
因此,如果您想调用不带任何参数的构造函数,请不要放置括号 Qlist<QString> myList;
.
使用 New 运算符时只能加括号 QList<QString> *myList = new QList<QString>()
.
圆括号运算符在C++中用于创建可调用对象,如果你想了解更多可以看看这个link
我正在尝试 return 从 QRegularExpression 到 QList 的匹配列表 return,代码如下:
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();
其实是一个函数。对于变量,您必须省略括号;但这很令人困惑,因为您通常使用括号将参数传递给构造函数。
应该是:
QList<QString> list;
// or
QList<QString> 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++ 中可以重载 ()
等运算符,因此编译器很难区分不带参数的构造函数和括号运算符。
因此,如果您想调用不带任何参数的构造函数,请不要放置括号 Qlist<QString> myList;
.
使用 New 运算符时只能加括号 QList<QString> *myList = new QList<QString>()
.
圆括号运算符在C++中用于创建可调用对象,如果你想了解更多可以看看这个link