There''s no need to make friend functions if you want pointers to a class member function. What you need to do is to get the type of a pointer-to-member-function right.
Example:
class a
{
public:
void foo(int);
void bar(int);
};
If you want a pointer to a member function expecting an int, this is the correct type:
void (a::*)(int)
To make an easy typedef:
typedef void (a::*FuncPointer)(int);
FuncPointer now points to a member function of a that expects an int.
To call a member function using a function pointer:
FuncPointer fptr = &a::foo;
a aobj;
(aobj.*fptr)(1);
You can make an array like this:
FuncPointer array[] = { &a::foo, &a::bar };
or
void (a::*array[])(int) = { &a::foo, &a::bar };
Calling works as follows:
(aobj.*(array[0]))(1);
For info, see
http://www.parashift.com/cpp-faq-lite/pointers-to-members.html, which goes a bit more into detail about pointers to member functions.
The technique jwalker points out can be used to use a class member function in code that expects a pointer to a global function.
HTH