L'accès est facilité, mais tu dois avoir un nombre de strutures incroyable... si je ne me trompe pas, ca donne quelque chose du genreCa facilite beaucoup l'accès à ces données plutôt qu'un tableau de void*.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 (les nombres choisis sont des exemples) Nombre de types différents existants : 3 (int, float, char*) Nombre de colones max d'une requète : 5 Nombre de structures possibles : 3^1 + 3^2 + 3^3 + 3^4 + 3^5 !!Si si, bien sûr, comme pour un tableau de n'importe quel type. Seulement, il va falloir caster ton void* en un type concret (int*, float*, ...) pour pouvoir l'utiliser. Il te faut donc des infos en plus, stockées dans ton resultset, pour savoir de quel type est chaque colone.Et puis comment tu parcours un tableau de void* ? je doute que l'accès au 6ème champ (par exemple) se fasse par "champ[5]"...
Par exempleMais j'imagine que tu as déjà un code qui fonctionne pour tout cela. Mais c'est vrai que pour mettre en cache ces resultset différents, en programmation non OO, je ne vois pas de solution évidente, à part ce type de cast peu élégant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 enum type { entier, flottant, chaine }; struct resultset { int nb_colones; type* types_colones; // tableau des types contenus void** contenu_colones; // tableau des contenus eux-même (void*) };
Peut-être que quelqu'un peut donner son avis la dessus ?
Partager