我在 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>
它发生的地方分配内存?