I just need someone to help me point out my array = newstate pointer mistake...
Code:
#include <iostream>
#include <cstddef>
using namespace std;
typedef void (*state_t)( char * inData, unsigned int , size_t );
class State
{
state_t Curstate;
unsigned int label;
public:
State(void)
{ Curstate = NULL; }
State( state_t & nState , unsigned int nID)
{
if( nState != NULL )
{
Curstate = nState;
label = nID;
}
}
void operation( state_t & nState , unsigned int nID)
{
if( nState != NULL )
{
Curstate = nState;
label = nID;
}
}
void operation ( char *& Data , size_t Size )
{
Curstate( Data ,label, Size );
}
unsigned int pass_ID(void) { return label; }
};
class FSM
{
State state;
char * data;
state_t * array;
unsigned int ID;
public :
FSM( state_t * newstate )
{
array = newstate;
ID = 0x0000000A;
data = NULL;
state( *array, ID);
}
void doAction(void)
{
state( data , 4);
if( ID ^ state.pass_ID() )
{
++i;
state(array[ ID % 10], ID );
}
};
}
void process1( char * data , unsigned int ID , size_t Size)
{
if( data = NULL )
data = new char [ Size];
cout<<"this is your ID "<<ID<<" I will now let go to next function"<<endl;
//passcode
*data = "hi";
++ID;
}
void process2( char * data, unsigned int ID , size_t Size )
{
cout<<"the passcode is "<<data<<endl;
*data = "no";
}
int main(void)
{
state_t state[2];
state[0] =&process1;
state[1] =&process2;
return 0;
}