|
Boost Users : |
From: Andreas Huber (ahd6974-spamboostorgtrap_at_[hidden])
Date: 2007-04-27 13:57:56
Serena Fritsch wrote:
>> Hi All,
>> Apologies if there are multiple psoting of this message.
>> I want to use the boost::statechart library. However i encountered a
>> small problem with using the orthogonal regions. In the statechart
>> tutorial, every class declaration is put into one file, however i
>> would like to put each class declaration into separate files.
[code & error snipped]
The ultimate problem lies in in Main.cpp (received by private email):
<original_code>
#include "Machine.h"
#include "C.h"
#include <iostream>
namespace sc = boost::statechart;
int main(){
Machine machine;
machine.initiate();
machine.displayStateConfiguration(machine);
return 0;
}
</original_code>
At the point of initiate() only one part of the initial state
configuration is known (C and A). B is missing (which MSVC duly reports
with an appropriate error message). Adding the following include to
Main.cpp solves the problem:
#include "B.h"
For more information please see:
<http://www.boost-consulting.com/boost/libs/statechart/doc/faq.html#HideInnerWorkings>
This item says that the *initial state* must be known at the point of
calling initiate() but it should more correctly say that the *initial
state configuration* must be known at the point where initiate is
called. That is, in addition to the state passed as InitialState to
state_machine, all its direct and indirect inner states must also be
known. There are ways to enhance encapsulation by means of
custom_reactions (which probably need to be triggered by posting
internal events in your case), please see:
HTH,
-- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net