hotsaravana
September 22nd, 2008, 08:42 AM
Hi,
I am trying to do funciton pointer implementation for member function of a class
<Code>
#define MAXNUMBEROFCONDITIONS 5
#define MAXNUMBEROFTRANSITION 5
class CHotStandbyStruct;
typedef bool (CHotStandbyStruct:: *TransCdtnFuncPtr)();
typedef void (CHotStandbyStruct:: *ActionFuncPtr)();
enum FSM_HOTSTANDBY
{
TRYSTATE,
ONLINE,
OFFLINE
};
struct Transition
{
TransCdtnFuncPtr MyTransCdtnFuncPtr;
enum FSM_HOTSTANDBY eNextState;
};
struct State
{
enum FSM_HOTSTANDBY eStateId;
struct Transition m_Transition[MAXNUMBEROFTRANSITION];
ActionFuncPtr MyActionFuncPtr;
};
class CHotStandbyStruct
{
public:
FSM_HOTSTANDBY FSMStates;
struct State sOnLine;
struct State sOffline;
struct State sTryState;
public:
CHotStandbyStruct();
virtual ~CHotStandbyStruct();
//User Defined Methods
virtual bool FnTry_Online();
bool FnTry_Offline();
bool FnOnline_Try();
bool FnOffline_Try();
void FnTryStateActionList();
void FnOnlineStateActionList();
void FnOfflineStateActionList();
};
--------------------------------------------------------------------------
class CHotStandby
{
public:
CHotStandby();
virtual ~CHotStandby();
};
CHotStandby::CHotStandby()
{
}
CHotStandby::~CHotStandby()
{
}
void main()
{
CHotStandbyStruct objHotStandbyStruct;
objHotStandbyStruct.sTryState.eStateId = TRYSTATE;
objHotStandbyStruct.sTryState.m_Transition[0].eNextState = ONLINE;
objHotStandbyStruct.sTryState.m_Transition[0].MyTransCdtnFuncPtr = &CHotStandbyStruct::FnTry_Online(); // Error (CHotStandbyStruct::FnTry_Online' : illegal call of non-static member function)
}
</Code>
May I know how to use function pointer inside a class and further implementation
I am trying to do funciton pointer implementation for member function of a class
<Code>
#define MAXNUMBEROFCONDITIONS 5
#define MAXNUMBEROFTRANSITION 5
class CHotStandbyStruct;
typedef bool (CHotStandbyStruct:: *TransCdtnFuncPtr)();
typedef void (CHotStandbyStruct:: *ActionFuncPtr)();
enum FSM_HOTSTANDBY
{
TRYSTATE,
ONLINE,
OFFLINE
};
struct Transition
{
TransCdtnFuncPtr MyTransCdtnFuncPtr;
enum FSM_HOTSTANDBY eNextState;
};
struct State
{
enum FSM_HOTSTANDBY eStateId;
struct Transition m_Transition[MAXNUMBEROFTRANSITION];
ActionFuncPtr MyActionFuncPtr;
};
class CHotStandbyStruct
{
public:
FSM_HOTSTANDBY FSMStates;
struct State sOnLine;
struct State sOffline;
struct State sTryState;
public:
CHotStandbyStruct();
virtual ~CHotStandbyStruct();
//User Defined Methods
virtual bool FnTry_Online();
bool FnTry_Offline();
bool FnOnline_Try();
bool FnOffline_Try();
void FnTryStateActionList();
void FnOnlineStateActionList();
void FnOfflineStateActionList();
};
--------------------------------------------------------------------------
class CHotStandby
{
public:
CHotStandby();
virtual ~CHotStandby();
};
CHotStandby::CHotStandby()
{
}
CHotStandby::~CHotStandby()
{
}
void main()
{
CHotStandbyStruct objHotStandbyStruct;
objHotStandbyStruct.sTryState.eStateId = TRYSTATE;
objHotStandbyStruct.sTryState.m_Transition[0].eNextState = ONLINE;
objHotStandbyStruct.sTryState.m_Transition[0].MyTransCdtnFuncPtr = &CHotStandbyStruct::FnTry_Online(); // Error (CHotStandbyStruct::FnTry_Online' : illegal call of non-static member function)
}
</Code>
May I know how to use function pointer inside a class and further implementation