qt使用迭代器重载qtextstream输出运算符

时间:2014-01-02 21:32:01

标签: c++ qt

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

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

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

定义为:

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

从PlatformModel对象中,我遍历这样的向量:

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

QTextStream最终被写入文件,但我得到的只是平台对象的地址 - 被覆盖的运算符&lt;&lt;函数没有被调用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你需要再次使用deerator - 因为vector包含指针,迭代器是指向vector元素的指针,我是双指针。

    outStream << *(*i);

应该可以工作,或者为了简单起见,您可以使用Q_FOREACH宏或索引迭代向量。