If I have two classes like this :
class A
{
public:
int *(*fun)( const int &t );
A( int *( *f )( const int &t ) ) : fun( f ) {}
};
this result in compiler error
Because f
is a A
's non-static member function returning int*
, that accepts single const reference to int
. That means, that its type is not:
int* (*)(const int &);
but:
int* (A::*)(const int&);
Also, your code signalizes very bad design - I think you need simple virtual function. But if you want to keep writing things this way, you may want to read: ISOCPP: Pointers to members.
Remember, that non-static member functions of type C
always accepts additional implicit argument of type C*
(or const C*
, if function is declared with const
qualifier), that points to instance of C
this function was called on.