CPP/FunctionPointer

From ProgrammingExamples
< CPP
Revision as of 19:33, 25 June 2010 by FirstPerson (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
#include <iostream>
using namespace std;
 
int add(int a, int b)      { return a + b;  }
int subtract(int a, int b) { return a - b;  }
int multiply(int a, int b) { return a * b;  }
int divide(int a, int b)   { return a / b ; }
 
//to make syntax easier, use typedef for a function pointer
//AritmaticFunctionPointer is a pointer function that takes a function with a int return value with 2 int parameter
typedef int (*ArithmaticFunctionPointer)(int,int);
 
int ApplyFunction(const ArithmaticFunctionPointer func, int a, int b){
	return (*func)(a,b);
}
 
int main(){
	const int ADD = 1;
	const int SUB = 2;
	const int MULT = 3;
	const int DIV = 4;
	int a = 0;
	int b = 0;
 
	cout <<"Enter 2 number : " ;
	cin >> a >> b;
 
	cout << "Choose :\n[1]ADD\n[2]SUBTRACT\n[3]MULTIPLY\n[4]DIVIDE\n<input> : ";
	int opt = 0;
	cin >> opt;
 
	switch(opt){
		case ADD:  cout << ApplyFunction(add,a,b) << endl; break;
		case SUB:  cout << ApplyFunction(subtract,a,b)<< endl;; break;
		case MULT: cout << ApplyFunction(multiply,a,b)<< endl;; break;
		case DIV:  cout << ApplyFunction(divide,a,b)<< endl;; break;
		default: cout << "Invalid Options...exiting...\n"; break;
	}
 
  return 0;
}