C++ 在QDataStream中序列化类
我正试图用QDataStream保存3个QVector和一个int 我超载了操作员我相信这句话:C++ 在QDataStream中序列化类,c++,qt,C++,Qt,我正试图用QDataStream保存3个QVector和一个int 我超载了操作员我相信这句话: out << this; 这将打印指针值,*这将打印所需的输出。非常感谢。它正在工作,数据的加载也在工作。 #include "clouddata.h" #include <QFile> CloudData::CloudData() { } void CloudData::setPolyVector(QVector<QPoint> pVec) { m
out << this;
这将打印指针值,*这将打印所需的输出。非常感谢。它正在工作,数据的加载也在工作。
#include "clouddata.h"
#include <QFile>
CloudData::CloudData()
{
}
void CloudData::setPolyVector(QVector<QPoint> pVec)
{
m_polyVector = pVec;
}
void CloudData::setPathPointVector(QVector<QPoint> ppVec)
{
m_pathPointVector = ppVec;
}
void CloudData::setSuppPointVector(QVector<QPoint> spVec)
{
m_supPointVector = spVec;
}
void CloudData::setRandSeed(int randSeed)
{
m_randSeed = randSeed;
}
bool CloudData::save(QString filename)
{
QFile file(filename);
if(!file.open(QIODevice::WriteOnly))
return false;
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_8);
out << this;
file.close();
return true;
}
void CloudWidget::saveCloudData()
{
QString filename = QFileDialog::getSaveFileName(this,tr("Save cloud clutter data"),
"/Users/Admin/Downloads/", "Cloud Clutter Data (*.ccd)");
m_cloudData.setPolyVector(m_polygon);
m_cloudData.setPathPointVector(m_pathPointVector);
m_cloudData.setSuppPointVector(m_supPointVector);
m_cloudData.save(filename);
}
out << this;
out << *this;
#include <QFile>
#include <QTextStream>
#include <QDebug>
class StreamTest
{
public:
StreamTest() { var1 = "var1"; var2 = "var2"; }
QString var1;
QString var2;
friend QTextStream& operator <<(QTextStream &textStream, const StreamTest &st)
{
textStream << st.var1 << st.var2;
return textStream;
}
void save(void)
{
QString str_1;
QTextStream text_stream_1(&str_1);
text_stream_1 << this;
qDebug() << str_1;
QString str_2;
QTextStream text_stream_2(&str_2);
text_stream_2 << *this;
qDebug() << str_2;
}
};
int main(int argc, char *argv[])
{
StreamTest st;
st.save();
}
"0x7fff18070c10"
"var1var2"