Qt QDatastream运算符>&燃气轮机;对于QList<;类别*>;

Qt QDatastream运算符>&燃气轮机;对于QList<;类别*>;,qt,Qt,因此,我重载了>>和,因为要更改rhs指向的对象,应该将指针作为参数传递给运算符 此外,这样做,指针的更改将在函数返回时反映出来 QDataStream & operator >>(QDataStream &dataStream, Faction **rhs) { *rhs = new Faction(); return (*rhs)->read(dataStream); <---- rhs will return good data. }

因此,我重载了>>和,因为要更改rhs指向的对象,应该将指针作为参数传递给运算符

此外,这样做,指针的更改将在函数返回时反映出来

QDataStream & operator >>(QDataStream &dataStream, Faction **rhs)
{
    *rhs = new Faction();
    return (*rhs)->read(dataStream); <---- rhs will return good data.
}
QDataStream&operator>>(QDataStream&dataStream,派系**rhs)
{
*rhs=新派系();

return(*rhs)->read(dataStream);运算符>>希望有一个引用作为其第二个参数,您也可以有对指针的引用:

QDataStream & operator >>(QDataStream &dataStream, Faction *&rhs)
{
    rhs = new Faction();
    return rhs->read(dataStream);
}

我试过了,但它不会编译,因为我的var是QList的。我必须将它更改为QList,这让我处于同一条船上。因为我在return语句中获得了良好的数据,我想知道序列化指针的QList是否有问题。hmmYou仍然可以将指针添加到QList,看看示例。我知道它是用vector,b但想法是一样的。这就是问题所在。所以我想确保我理解你所做的更改。因此,我们没有传递指针的“副本”,而是传递了指针的引用,这样对该指针所做的任何更改都将是原始的。这听起来对吗?
dataStream >> factions
QDataStream & operator >>(QDataStream &dataStream, Faction *rhs)
{
    rhs = new Faction();
    return rhs->read(dataStream); <---- rhs will return good data.
}
QDataStream & operator >>(QDataStream &dataStream, Faction **rhs)
{
    *rhs = new Faction();
    return (*rhs)->read(dataStream); <---- rhs will return good data.
}
QDataStream & operator >>(QDataStream &dataStream, Faction *&rhs)
{
    rhs = new Faction();
    return rhs->read(dataStream);
}