我创建了两个类-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包含指针,并且iterator是指向vector元素的指针,而i是双指针。

    outStream << *(*i);

应该可以,或者您可以使用Q_FOREACH宏或index进行遍历,以简化操作。

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

10-16 05:05