Come funziona Qvariant internamente?
Domanda
Voglio sapere come Qvariant può internamente negozi, int, qmap, qlist, ...
Voglio dire, cos'è la struttura/implementazione interne dei dati? Qual è il sovraccarico di conservare e recuperare i tipi (int, float) in Qvariant?
Soluzione
Una rapida occhiata al codice rivela che a QVariant
è fondamentalmente a union
di diversi tipi primitivi (int
, float
ecc.), a QObject
puntatore e a void*
puntatore per qualsiasi altra cosa che non sia un QObject
e non un primitivo. C'è anche un membro dei dati di tipo che gli consente di sapere ciò che è effettivamente archiviato lì. Il sovraccarico sembra non essere molto più che archiviare a un membro di una struttura, controllandolo per la compatibilità del tipo e eventualmente fare una conversione (int per fluttuare ad esempio)