Okay, this works, like Spartan said, pass a pointer to the class as a parameter to any function which can be assigned to a function pointer, then members of the class can be accessed from the statically declared members.
#include <stdio.h>
class ExampleClass
{
public:
int (*member_fn)(ExampleClass *);
int member_int;
static int foo(ExampleClass *);
static int bar(ExampleClass *);
void SetFoo(void);
void SetBar(void);
int CallMember(ExampleClass *);
};
int ExampleClass::foo(ExampleClass *e)
{
e->member_int=1;
return 1;
}
int ExampleClass::bar(ExampleClass *e)
{
e->member_int=2;
return 2;
}
void ExampleClass::SetFoo(void)
{
member_fn=&ExampleClass::foo;
}
void ExampleClass::SetBar(void)
{
member_fn=&ExampleClass::bar;
}
int ExampleClass::CallMember(ExampleClass *e)
{
return (*member_fn)(e);
}
main(int argc, char **argv)
{
ExampleClass ex;
int result;
ex.SetFoo();
printf("result from SetFoo=%d, member_int=%d\n",
ex.CallMember(&ex),ex.member_int);
ex.SetBar();
printf("result from SetBar=%d, member_int=%d\n",
ex.CallMember(&ex),ex.member_int);
return 0;
}
Thanks all!