#include <iostream>
using namespace std;
class CA
{
public:
int Sum(int a, int b)
{
return a+b;
}
};
class CB
{
public:
float Sum(float a, float b)
{
return a+b;
}
};
template <typename ClassType, typename ParaType>
class CC
{
public:
/*函数指针类型模板*/
typedef ParaType (ClassType::*pClassFun)(ParaType, ParaType);
/*函数指针函数模块*/
ParaType Result(ClassType* pClassType, pClassFun fun, ParaType a, ParaType b)
{
return (pClassType->*fun)(a, b);
}
};
void main()
{
/*测试整型*/
CA ca;
CC<CA,int> cc;
int a = 3;
int b = 4;
cout<<"The sum of a and b is "<<cc.Result(&ca, &CA::Sum, a, b)<<endl;
/*测试浮点型*/
CB cb;
CC<CB,float>fcc;
float fa = 3.3f;
float fb = 4.6f;
cout<<"The sum of fa and fb is "<<fcc.Result(&cb, &CB::Sum, fa, fb)<<endl;
}
using namespace std;
class CA
{
public:
int Sum(int a, int b)
{
return a+b;
}
};
class CB
{
public:
float Sum(float a, float b)
{
return a+b;
}
};
template <typename ClassType, typename ParaType>
class CC
{
public:
/*函数指针类型模板*/
typedef ParaType (ClassType::*pClassFun)(ParaType, ParaType);
/*函数指针函数模块*/
ParaType Result(ClassType* pClassType, pClassFun fun, ParaType a, ParaType b)
{
return (pClassType->*fun)(a, b);
}
};
void main()
{
/*测试整型*/
CA ca;
CC<CA,int> cc;
int a = 3;
int b = 4;
cout<<"The sum of a and b is "<<cc.Result(&ca, &CA::Sum, a, b)<<endl;
/*测试浮点型*/
CB cb;
CC<CB,float>fcc;
float fa = 3.3f;
float fb = 4.6f;
cout<<"The sum of fa and fb is "<<fcc.Result(&cb, &CB::Sum, fa, fb)<<endl;
}