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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?