gpt4 book ai didi

c++ - qt 用迭代器重载了 qtextstream 输出运算符

转载 作者:太空宇宙 更新时间:2023-11-04 11:42:21 25 4
gpt4 key购买 nike

我创建了两个类 - Platform 和 PlatformModel。 PlatformModel 包含一个 QVector。

我想输出 vector 中每个平台的信息,所以我重载了 Platform 类的输出运算符,如下所示:

QTextStream &operator <<(QTextStream &outStream, const Platform  &platform);

定义为:

QTextStream &operator <<(QTextStream &outStream, const Platform &platform)
{
platform.print(outStream);
return outStream;
}

从 PlatformModel 对象,我像这样遍历 vector :

QVector<Platform*>::const_iterator i;
for(i = mPlatforms.begin(); i != mPlatforms.end(); ++i)
{
if ((*i)->mInclude)
{
outStream << (*i);
}
}

QTextStream 最终被写到一个文件中,但我得到的只是平台对象的地址——未调用覆盖的 operator<< 函数。我做错了什么?

最佳答案

您需要再次引用迭代器 - 因为 vector 包含指针,而迭代器是指向 vector 元素的指针,i 是双指针。

    outStream << *(*i);

应该可以工作,或者您可以使用 Q_FOREACH 宏或为简单起见的索引来遍历 vector 。

关于c++ - qt 用迭代器重载了 qtextstream 输出运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892312/

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