Bonjour.

J'essaye d'utiliser un shared_ptr de template, afin de pouvoir ajouter ou retirer des éléments d'un vector que contient le template.
Ca m'a fait planter le programme, sans m'en dire plus au niveau du debugg. C'est dès que j'essaye de rajouter un object que ca stop.

Voici mon code :

ma class template :

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
 
 
 
template < typename T >
class OBJECT_Template
{
 
public :
 
    OBJECT_Template () {}
    ~OBJECT_Template () {}
    ...
 
    template < typename Ti > void addObject ( std::shared_ptr < Ti >  target )
    {
       _template_vector.push_back( target ) ;
    }
    ...
private :
 
    std::vector < std::shared_ptr < T > >                   _template_vector ;
};
qui est utilisé ainsi par un objet , et renoyé a un autre objet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
    _OBJECT_X_Template -> initializes() ; 
 
    _OBJECT_Super_Template.addTemplateObject ( _OBJECT_X_Template ) ;
mon super_Template, le transmet a ses objets :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
 
void OBJECT_Super::addTemplateObject (  std::shared_ptr < OBJECT_Template < X > > object )
{
    _templateX = object ;
}


jusque là, tout va bien...
mais...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
void OBJECT_Super::doSomethingWithTemplate( )
{
    std::shared_ptr < X > model ( new X ( *it ) ;
    _templateX -> addObject ( model ) ;
}
plantage...



Ma question :

Est-ce seulement possible de faire ca ( autrement dit utiliser un shared_ptr/ptr de class template <ObjetConnu> dans les attributs d'un objet ) ?
Ou ce n'est pas très / totalement pas net ?

Merci si vous pouvez maider