Bonjour.
J'essaye de copier des objets hérités, mais il semble que l'héritage ne soit pas pris en compte.
J'utilise pourtant que des fonctions virtuelles dans l'objet mère, et transfère l'objet en std::shared_ptr <Objet>.
Voici un bout de code , où "_object_container" contient des objets "Object_HUD", hérités de l'objet mère "Object" :
(j'aurais pus utilisé un froncteur pour chercher dirrectement l'objet par son nom, mais pour l'instant, c'est pas la question)
L'objet est bien copié, mais en tant qu'Object, et non "Object_HUD"...
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
20
21
22
23
24
25 std::shared_ptr < Object > model_Object ; for ( std::vector < std::shared_ptr < Object > > :: iterator it = _object_container.begin() ; it != _object_container.end() ; it ++ ) { if( (*it) -> setName() == name ) { model_Object = *it ; } } std::vector < std::shared_ptr < Object > > :: iterator it ; it = find ( _object_container.begin() , _object_container.end() , model_Object ) ; std::shared_ptr < Object > model ( new Object ( **it )) ; model -> getPosition ( x , y ) ; _object_container.push_back ( model ) ;
Comme je le disais plus haut, l'objet mère ne contient que des fonctions virtuelles, et l'objet est copié en shared_ptr ...Il me semble donc respecter les condition pour effectuer une copie d'objet hérité...
est-ce donc bien le cas ou j'ai oublié quelque chose / ou ca ne marche pas comme ca avec la copie des objets hérités.
Merci si vous pouvez m'aider.
Partager