我创建了两个类 - 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;函数没有被调用。我做错了什么?
答案 0 :(得分:1)
你需要再次使用deerator - 因为vector包含指针,迭代器是指向vector元素的指针,我是双指针。
outStream << *(*i);
应该可以工作,或者为了简单起见,您可以使用Q_FOREACH
宏或索引迭代向量。