0

我在 main.c 中注册

qRegisterMetaTypeStreamOperators<QVector<QPointer<Sensor>>>("QVector<QPointer<Sensor>>");

我超载这个

inline QDataStream &operator<<(QDataStream &stream, const QVector<QPointer<Sensor>> &sensors) {
    auto i = sensors.constBegin();
    while (i != sensors.constEnd()) {
        stream << i->operator Sensor *()->id() << i->operator Sensor *()->type()
               << i->operator Sensor *()->operation()
               << i->operator Sensor *()->operationValue()
               << i->operator Sensor *()->valueBytesize();
        ++i;
    }
    return stream;
}

inline QDataStream &operator>>(QDataStream &stream, QVector<QPointer<Sensor>> &sensors) {
  return stream;
}

我从 qsetting 中获得了价值

QVariant v = settings.value("1");
m_sensors = v.value<QVector<QPointer<Sensor>>>();

我得到QVector了新的指针都很好,但为什么它有效?我不明白如何为QPointer<Sensor>它发生的地方分配内存?

4

0 回答 0