
Untitled
By: a guest on
Aug 10th, 2012 | syntax:
None | size: 0.88 KB | hits: 3 | expires: Never
working with templates in c calculator
template <class A, class B >
A Sum(A Fnum, B Snum){
return Fnum + Snum;
}
template <class S, class W>
S Subtraction(S Fnum, W Snum){
return Fnum - Snum;
}
template <class M, class E>
M Multiplication(M Fnum, E Snum){
return Fnum * Snum;
}
template <class D, class C>
D Division(D Fnum, C Snum){
return Fnum / Snum;
}
T& operator+( T number );
float, int
#include<iostream>
using namespace std;
struct Add {
template < typename A, typename B > A operator() (const A & lhs, const B & rhs) { //note return type is A , what if A, B are diff? , you need promote one of them using specialization
return lhs + rhs;
}
};
//some other ops like above
template < typename op, class A, class B > A operate(A Fnum, B Snum)
{
op oper;
return oper(Fnum, Snum);
}
int main()
{
int a = 20, b = 30;
std::cout << operate < Add > (a, b) << std::endl;
}