Bonjour,
Mon bout de code ci dessous me pose problème.
Le constructeur implémente le fait que IInteraction doit toujours être liée à un CPointMechanicsEngine et que si un IInteraction est lié à un CPointMechanicsEngine, celui ci a un lien vers lui.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class IInteraction : public enable_shared_from_this<IInteraction> { public: IInteraction( boost::weak_ptr<CPointMechanicsEngine> iEngine ) : _Engine( iEngine ) { boost::shared_ptr<CPointMechanicsEngine> Engine(_Engine); Engine->AddInteraction( shared_from_this() ); } protected: boost::weak_ptr<CPointMechanicsEngine> _Engine; };
Cependant, lors de l'appel au constructeur de IInteraction, shared_from_this() lève une exception car le pi du shared_ptr est nul. En effet, pn, px, pi ne sont pas initialisés.
Voici l'appel au constructeur, où CFriction est une classe qui dérive de IInteractionSi je fais appel à shared_from_this() dans une méthode après le constructeur ait terminé, il n'y a pas de problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 boost::shared_ptr<CFriction> Friction ( new Medias::PointMechanicsEngine::Interactions::CFriction( PhysicalPoint , 0.3 , Engine ) );
Cependant, cela casse la RAII X(
Est ce que quelqu'un aurait une solution à mon problème, svp???
Merci!!!
Partager