我创建了两个类 - 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 。
我是一名优秀的程序员,十分优秀!