rendered paste body// functor.hclass Functor{public: virtual void operator()(const char* string)=0; // call using operator};template<class SomeClass>class SpecificFunctor : public Functor{ void (SomeClass::*fpt)(const char*); // pointer to member function SomeClass* pt2Object; // pointer to objectpublic: SpecificFunctor(SomeClass* _pt2Object, void(SomeClass::*_fpt)(const char*)) { pt2Object = _pt2Object; fpt=_fpt; } virtual void operator()(const char* string) { (*pt2Object.*fpt)(string); }};class ClassA{public: ClassA(){}; void Display(const char* text) { cout << "ClassA::Display " << text << endl; };};class ClassB{public: ClassB(){}; void Display(const char* text) { cout << "ClassB::Display " << text << endl; };};// main.cpp#include "functor.h"int _tmain(int argc, _TCHAR* argv[]){ ClassA objA; ClassB objB; // a ) functor which encapsulates pointer to object and to member of TClassA SpecificFunctor<ClassA> specFuncA(&objA, &ClassA::Display); // b) functor which encapsulates pointer to object and to member of TClassB SpecificFunctor<ClassB> specFuncB(&objB, &ClassB::Display); Functor* vTable[] = { &specFuncA, &specFuncB }; (*vTable[0]) ("called!"); // via function "Call" (*vTable[1]) ("called!"); // via operator "()" return 0;}