the Fptr which is returned from the function points to a function which is a member function of a class
Code:
//compiled using devcpp (GCC compiler)
//this code shows how to return address of global function (add and subtract)
//want to know how to return address of a member function of a class (tAdd and tSubtract)
#include <cstdlib>
#include <iostream>
using namespace std;
int add(int a, int b);
int subtract(int a,int b);
class Temp
{
public:
int tAdd(int,int);
int tSubtract(int,int);
//getFPtr will take a const char and return a function pointer
int (*getFPtr(const char opcode))(int,int);
};
int main(int argc, char *argv[])
{
Temp t;
cout<<(t.getFPtr('-'))(20,10);//calling a function which returns a fptr
system("PAUSE");
return EXIT_SUCCESS;
}
int (*Temp::getFPtr(const char opcode))(int,int)
{
cout<<"int (*Temp::getFPtr(const char opcode))(int,int)"<<endl;
if(opcode == '+')
return &add;
else if (opcode == '-')
return &subtract;
}
int add(int a, int b)
{
return a+b;
}
int subtract(int a,int b)
{
return a-b;
}
