gpt4 book ai didi

c++ - 使用带有 QStringList 指针的运算符<<

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:03 31 4
gpt4 key购买 nike

如何更改此代码?

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

myList<<s;

错误:

no match for 'operator<<' (operand types are 'QStringList*' and '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,您也可以为此使用 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")

关于c++ - 使用带有 QStringList 指针的运算符<<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19178815/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com