Manipulation d'adresse de pointeur pour memcpy sans connaitre le type des données.
Bonjour,
J'ai un petit soucis d'utilisation du C++, aussi comme c'est un cas un peu particulier, je voulais vous demandez votre avis :
J'ai un tableau dans je ne connais pas le type (ça peut être MaClasse[4], comme float[6]... etc).
Mais à aucun moment je ne sais quel est le type. Tout ce dont je dispose c'est :
* sizeObj : la taille de l'objet (sizeof(MaClasse) ou sizeof(float) par exemple).
* source : un void * pointant sur l'obj (mon tableau).
* destination : un void * pointant sur l'obj (du type égal à ce qui est contenu dans le tableau (par exemple maClasse ou un float).
J'aimerais faire un memcpy(destination, source, sizeObj) pour plusieurs élément du tableau à divers destination, mais il semble que le fait de ne pas connaitre le type de l'obj ne passe pas à la compilation...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
for (unsigned l_ii = 0; l_ii < l_countInstance; l_ii++)
{
// Source pointer on the current value to copy
void * l_val = new void*;
// set the obj in l_val
Get(l_val);
int * l_beginMem = (int *)l_val + (l_countInstance * l_sizeObj);
// Destination pointer on child where copy value
void * l_valChild = new void *;
// Get the obj of destination
m_children.at(l_ii)->Get(l_valChild);
// Copy value
memcpy (l_valChild, l_beginMem, l_sizeObj);
} |
J'ai le sentiment de ne pas posséder la bonne adresse au niveau de la ligne en bleu...
En connaissant à l'avance le type, je peux caster void * l_val en Montype *, si cela peut vous aidez à comprendre.
Comment manipuler seulement les adresses des endroits sources et destinations sans se préocuper du type des données, puisque je connais les tailles à copier?