首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用带有operator<<指针的QStringList

使用带有operator<<指针的QStringList
EN

Stack Overflow用户
提问于 2013-10-04 10:18:30
回答 3查看 2.6K关注 0票数 2

我怎么能改变这段代码?

代码语言:javascript
代码运行次数:0
运行
复制
QString s="123";
QStringList *myList=new QStringList;

myList<<s;

错误:

不匹配“operator<<”(操作数类型为“QStringList*”和“QString”)

代码语言:javascript
代码运行次数:0
运行
复制
*myList<<s;

也不起作用:在此之后,myList是空的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-04 10:24:42

对于QStringList使用指针是没有什么意义的,因为这是一个隐式共享类,因为它是在写入时复制的。您可以在下面找到更多详细信息:

http://qt-project.org/doc/qt-5.1/qtcore/implicit-sharing.html

这意味着,我会重构您的代码,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
QString s="123";
QStringList myList;

myList << s;

注意,您也有一个用于myList的错误,因为您似乎已经编写了myLis。这至少是一个语法错误,会导致编译错误。如果您对此有支持,也可以使用C++11语法:

代码语言:javascript
代码运行次数:0
运行
复制
QString s="123";
QStringList myList({s});

当您有更多的元素要插入,而没有连续的单独追加行时,这将变得非常有用。

但是,如果您仍然出于某种原因对此感兴趣,则应考虑以下几点:

代码语言:javascript
代码运行次数:0
运行
复制
myList->append(s);

或者,作为最后的手段,如果你没有犯过任何其他的错误,即使你的路线也会起作用。这应该是查看您是否犯过其他错误的全部代码:

main.cpp

代码语言:javascript
代码运行次数:0
运行
复制
#include <QStringList>
#include <QDebug>

int main()
{
    QString s="123";
    QStringList *myList = new QStringList;
    *myList<<s;
    qDebug() << *myList;
    return 0;
}

建筑(类似的东西)

代码语言:javascript
代码运行次数:0
运行
复制
g++ -Wall -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main.cpp && ./a.out

输出

代码语言:javascript
代码运行次数:0
运行
复制
("123")
票数 7
EN

Stack Overflow用户

发布于 2013-10-04 10:21:44

<<是一个过载的操作符。我觉得你应该试试

代码语言:javascript
代码运行次数:0
运行
复制
(*myList)<<s;

编辑我刚刚测试,和*myList << s;似乎工作..。也许你还有别的问题..。

票数 1
EN

Stack Overflow用户

发布于 2014-08-16 19:41:04

如果使用指向QStringList的指针,则必须在使用后手动删除它,因为该类不是QOBJECT,也不使用Qt垃圾收集器系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19178815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档