Comment Qvariant fonctionne en interne?
Question
Je veux savoir comment Qvariant peut stores en interne, int, qmap, qlist, ...
Je veux dire quelle est la structure / implémentation interne? Quelle est la surcharge du stockage et de la récupération des types (int, float) dans Qvariant?
La solution
Un rapide coup d'œil au code révèle qu'un QVariant
est essentiellement un union
de plusieurs types primitifs (int
, float
etc '), un QObject
pointeur, et un void*
pointeur pour tout ce qui n'est pas un QObject
et pas une primitive. Il existe également un membre de Data qui lui permet de savoir ce qui y est actuellement stocké. Les frais généraux ne semblent pas être bien plus que de stocker à un membre d'une structure, vérifiant cela pour la compatibilité du type et éventuellement une conversion (int en flottant par exemple)