我怎么能改变这段代码?
QString s="123";
QStringList *myList=new QStringList;
myList<<s;
错误:
不匹配“operator<<”(操作数类型为“QStringList*”和“QString”)
*myList<<s;
也不起作用:在此之后,myList是空的。
发布于 2013-10-04 02:24:42
对于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);
或者,作为最后的手段,如果你没有犯过任何其他的错误,即使你的路线也会起作用。这应该是查看您是否犯过其他错误的全部代码:
main.cpp
#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")
发布于 2013-10-04 02:21:44
<<
是一个过载的操作符。我觉得你应该试试
(*myList)<<s;
编辑我刚刚测试,和*myList << s;
似乎工作..。也许你还有别的问题..。
发布于 2014-08-16 11:41:04
如果使用指向QStringList的指针,则必须在使用后手动删除它,因为该类不是QOBJECT,也不使用Qt垃圾收集器系统。
https://stackoverflow.com/questions/19178815
复制