Difference between revisions of "CPP/FunctionPointer"

From ProgrammingExamples
< CPP
Jump to: navigation, search
(Created page with '==FunctionPointer.cpp== <source lang="cpp"> #include <iostream> using namespace std; void add(int a, int b); void DoThing(void (*pt2Func)(int,int)); int main(int argc, char …')
 
 
Line 1: Line 1:
==FunctionPointer.cpp==
+
<source lang = "cpp">
<source lang="cpp">
+
 
#include <iostream>
 
#include <iostream>
 
 
using namespace std;
 
using namespace std;
  
void add(int a, int b);
+
int add(int a, int b)     { return a + b; }
void DoThing(void (*pt2Func)(int,int));
+
int subtract(int a, int b) { return a - b; }
+
int multiply(int a, int b) { return a * b;  }
int main(int argc, char *argv[])
+
int divide(int a, int b{ return a / b ; }
{
+
  DoThing(add);
+
 
+
   return 0;
+
}
+
  
void add(int a, int 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
  cout << a+b;
+
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;
  
void DoThing(void (*pt2Func)(int,int))
+
cout <<"Enter 2 number : " ;
{
+
cin >> a >> b;
  pt2Func(2,3);
+
 
 +
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;
 
}
 
}
 
</source>
 
</source>

Latest revision as of 19:33, 25 June 2010

#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;
}