我创建了两个类-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/