我如何更改此代码?
QString s="123";
QStringList *myList=new QStringList;
myList<<s;
错误:
与'operator&lt;&lt;'不匹配(操作数类型是'QStringList *'和 '的QString')
*myList<<s;
也不起作用:myList在此之后为空。
答案 0 :(得分:6)
使用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")
答案 1 :(得分:1)
<<
是一个重载过多的运算符。我想你应该试试
(*myList)<<s;
编辑我刚刚测试过,*myList << s;
似乎有用......
也许你还有其他一些问题......
答案 2 :(得分:0)
如果您使用指向QStringList的指针,则必须在使用后手动删除它,因为此类不是QOBJECT且不使用Qt垃圾收集器系统。