I assume you have a problem calling a member function via a pointer. That is not as simple as calling a simple (non-class) function, because two things are involved: (a) the function itself (b) the object that the member function should be called on.
For your example, a member function call would look like:
typedef float* (testPtr::*MemFuncPtr) (float *a, int n);
MemFuncPtr p = &testPtr::add;
(testPtrObject.*p) (&a, n);
As you see, the syntax is awkward and one of the weaker points of C++.
Instead of handling the pointer to function and the object pointer separately, why not bundle them together into a single object. That's what is generally called a delegate.
You find a lot of good articles here on CodeProject about delegates, for example this one:
Member Function Pointers and the Fastest Possible C++ Delegates
Hope that gets you on track.