significa - sobrecarga de operadores en c++ ejemplos sencillos
Sobrecargar los operadores QDataStream<< y>> para un tipo definido por el usuario (2)
Tengo un objeto que me gustaría poder leer y escribir desde / hacia un QDataStream. El encabezado es el siguiente:
class Compound
{
public:
Compound(QString, QPixmap*, Ui::MainWindow*);
void saveCurrentInfo();
void restoreSavedInfo(QGraphicsScene*);
void setImage(QPixmap*);
QString getName();
private:
QString name, homeNotes, addNotes, expText;
Ui::MainWindow *gui;
QPixmap *image;
struct NMRdata
{
QString hnmrText, cnmrText, hn_nmrText, hn_nmrNucl, notes;
int hnmrFreqIndex, cnmrFreqIndex, hn_nmrFreqIndex,
hnmrSolvIndex, cnmrSolvIndex, hn_nmrSolvIndex;
}*nmr_data;
struct IRdata
{
QString uvConc, lowResMethod,
irText, uvText, lowResText, highResText,
highResCalc, highResFnd, highResFrmla,
notes;
int irSolvIndex, uvSolvIndex;
}*ir_data;
struct PhysicalData
{
QString mpEdit, bpEdit, mpParensEdit, bpParensEdit,
rfEdit, phyText, optAlpha,
optConc, elemText, elemFrmla,
notes;
int phySolvIndex, optSolvIndex;
}*physical_data;
};
Para todos los efectos, la clase solo sirve como una abstracción para un puñado de QStrings y un QPixmap. Idealmente, podría escribir una QList en QDataStream, pero no estoy seguro de cómo hacerlo.
Si la sobrecarga del operador es una solución adecuada, escribiría código como
friend QDataStream& operator << (QDataStream&,Compound) { ... }
ser una solución potencial? ¡Estoy muy abierto a sugerencias! Por favor, avíseme si es necesario hacer más aclaraciones.
¡Creo que has respondido tu propia pregunta! El operador de flujo
QDataStream& operator<<( QDataStream&, const Compound& )
funcionará bien En la implementación, solo utiliza los operadores de flujo existentes en QDataStream
para serializar los bits individuales de su Compound
. Algunas clases de Qt también definen a los operadores que no son miembros de QDataStream
. QString
es uno y también lo es QList
así que parece que estás ordenado.
Si desea sobrecargar el operador "extraer" >>, su firma debe ser:
QDataStream & operator >> (QDataStream & in, MyClass & class);
Espero eso ayude.