我怎样才能改变这种代码?
QString s="123";
QStringList *myList=new QStringList;
myList<<s;
错误:
敌不过“运算符<<”(操作数类型是“QStringList中*”和“的QString”)
*myList<<s;
没有工作过:myList中是空的,在此之后。
我怎样才能改变这种代码?
QString s="123";
QStringList *myList=new QStringList;
myList<<s;
错误:
敌不过“运算符<<”(操作数类型是“QStringList中*”和“的QString”)
*myList<<s;
没有工作过:myList中是空的,在此之后。
还有一点要在使用指针无点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的垃圾收集系统。