我如何更改此代码?
QString s="123";
QStringList *myList=new QStringList;
myList<<s;
错误:
'operator<<' 不匹配(操作数类型为 'QStringList*' 和 'QString')
*myList<<s;
也不起作用:在此之后 myList 是空的。
将指针用于 a 几乎没有意义,QStringList
因为由于写时复制,这是一个隐式共享的类。您可以在下面找到更多详细信息:
http://qt-project.org/doc/qt-5.1/qtcore/implicit-sharing.html
这意味着,我会将您的代码重构为如下所示:
QString s="123";
QStringList myList;
myList << s;
myList
请注意,您似乎也写了一个错字myLis
。这至少是一个会导致编译错误的语法错误。如果您对此有支持,也可以为此使用 C++11 语法:
QString s="123";
QStringList myList({s});
当您要插入更多元素而无需单独附加连续的行时,这将派上用场。
但是,如果您出于某种原因仍然对此感兴趣,则应考虑以下事项:
myList->append(s);
或者作为最后的手段,如果你没有犯任何其他错误,你的生产线也应该可以工作。这应该是整个代码,看看你是否犯了任何其他错误:
#include <QStringList>
#include <QDebug>
int main()
{
QString s="123";
QStringList *myList = new QStringList;
*myList<<s;
qDebug() << *myList;
return 0;
}
g++ -Wall -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main.cpp && ./a.out
("123")
<<
是一个重载的运算符。我觉得你应该试试
(*myList)<<s;
编辑我刚刚测试过,*myList << s;
似乎可以工作......也许你还有其他问题......
如果您使用指向 QStringList 的指针,则必须在使用后手动删除它,因为此类不是 QOBJECT 并且不使用 Qt 垃圾收集器系统。