héritage et chaine d'objets
Bonjour.
Il se passe quelque chose d'étrange dans mon code...J'aimerais utiliser une chaîne d'objets hérités, qui pourrait être accessible pour chacun d'entre eux.
Je crée donc une class Container qui jouera le rôle d'un vector amélioré, en somme, en y mettant à l'intérieur un vector d'OBJECT.
Quand je crée un vector d'OBJECT normale, ca marche.
quand je crée un vector de std::shared_ptr d'OBJECT, ca plante.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
class Container_OBJECT
{
public :
Container_OBJECT() ;
~Container_OBJECT() ;
void setSystem ( std::shared_ptr < System > system ) { _system = system ; }
void add ( std::shared_ptr < OBJECT > object ) ;
void update() ;
void destroyed() ;
private :
std::shared_ptr < System > _system ;
std::vector < std::shared_ptr < OBJECT > > _OBJECT ;
OBJECT _OBJECT_Test ; //celui ci fonctionne.
}; |
exemple d'utilisation :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
ENGINE::ENGINE()
{
...
std::shared_ptr < Container_OBJECT > modelC ( new Container_OBJECT ) ;
modelC -> setSystem ( _system ) ;
_Container_OBJECT = modelC ;
}
void ENGINE::load()
{
...
_Container_OBJECT -> destroyed() ;
_Container_OBJECT -> add ( _RESOURCES.getOBJECT( word ) ;
} |
ca plante, et en débug on m'indique l'endroit du bug, dans stl_vector.h :
Citation:
{ return const_iterator(this->_M_impl._M_finish); }
En revanche, si je fais la même chose avec l'objet test, qui n'est pas en std::shared_ptr, ca fonctionne.
Vu que je préfère éviter les pointeurs nu dans ce cas, même si c'est tout de même faisable vu le Container n'est pas censé disparaître, je viens vers vous en espérant avoir peut être une piste/solution/mise en avant d'erreur etc.. et vous poser cette question :
Cela peut-il être lié au fait que mon "OBJECT" soit dérivé en d'autres objets ?
Merci si vous pouvez m'aider.