Click to See Complete Forum and Search --> : function pointer inside a class


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