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é :
et je créé une machine (instance) :
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
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 :
Je veux donc faire un simple :
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 };
myMachine.add<FinalState>(&FS);
Mais il me sort une erreur :
Quelqu'un a une idée de ce que je fais de mal???"Assertion Failed : false, file c:\users\admin\desktop\sabrina\dev\sdk\boost_1_39_0\boost\statechart\details\state_base.hpp, line 174"
Je vois pas, surement car j'utilise boost depuis seulement une semaine![]()
Partager