使用操作符<<用QStringList中指针(Using the operator<

2019-10-18 17:11发布

我怎样才能改变这种代码?

QString s="123";
QStringList *myList=new QStringList;

myList<<s;

错误:

敌不过“运算符<<”(操作数类型是“QStringList中*”和“的QString”)

*myList<<s;

没有工作过:myList中是空的,在此之后。

Answer 1:

还有一点要在使用指针无点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")


Answer 2:

<<是一个非常重载操作符。 我想你应该尝试

(*myList)<<s;

编辑我只是测试,和*myList << s; 似乎工作...也许你有一些其他的问题...



Answer 3:

如果您正在使用指针QStringList中必须使用后手动删除它,“造成这种类不QObject的,并且不使用Qt的垃圾收集系统。



文章来源: Using the operator<< with a QStringList pointer