utiliser un shared_ptr de template
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:
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:
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:
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:
1 2 3 4 5 6 7
|
void OBJECT_Super::doSomethingWithTemplate( )
{
std::shared_ptr < X > model ( new X ( *it ) ;
_templateX -> addObject ( model ) ;
} |
plantage...:aie: :calim2:
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 ;)