usa sobrecarga significa sencillos que programacion poo para operadores operador ejemplos c++ qt operator-overloading iostream

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.