Bonjour,
quelqu'un pourrait me dire comment on utilise les intrusive_ptr<T> dans boost et dans quel contexte??

Je dois utiliser le add de boost::statechart::state_machine<MostDerived,InitialState>::add qui permet d'ajouter un état dans un automate.
Il faut lui passer un intrusive_ptr<T> en paramètre qui représente j'imagine un pointeur vers l'état qu'on veut ajouter.



J'ai ma machine (automate) qui est déclaré :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
struct Machine : sc::state_machine< Machine, PseudoState > {};
//PseudoState  est l'état initial
et je créé une machine (instance) :

Machine myMachine;


l'état que je veux ajouter est déclaré simplement :

FinalState FS;

FinalState étant une classe dérivée de simple_state dont voici la définition :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
struct FinalState : sc::simple_state< FinalState, Machine >
		{
			FinalState() { std::cout << "Etat final!\n"; } // entry
			~FinalState() { std::cout << "Fin etat final!\n"; } // exit
		};
Je veux donc faire un simple :

myMachine.add<FinalState>(&FS);
Mais il me sort une erreur :

"Assertion Failed : false, file c:\users\admin\desktop\sabrina\dev\sdk\boost_1_39_0\boost\statechart\details\state_base.hpp, line 174"
Quelqu'un a une idée de ce que je fais de mal???
Je vois pas, surement car j'utilise boost depuis seulement une semaine