function函数和模板类
最近在公司看代码学习到了一个function函数与模板类的结合,感觉非常的棒,特此记录下。
function.h
#include<iostream>
int A_Value(int a)
{
return a*10;
}
int B_Value(int a)
{
return a*5;
}
int A_Init(int a,int b)
{ return a*b ;}
int B_Init(int a,int b)
{ return a+b;}
Type.h
namespace TYPE
{
typedef std::function<int(int)> FuncValue;
typedef std::function<int(int, int)> FuncInit;
class TA
{
public:
FuncValue pValue;
FuncInit pInit;
TA()
{
pValue=A_Value;
pInit=A_Init;
}
~TA() = default;
}
class TB
{
public:
FuncValue pValue;
FuncInit pInit;
TB()
{
pValue=B_Value;
pInit=B_Init;
}
~TB() = default;
}
Manger.h
template<typename T>
class CManger
{
public:
CManger()
:m_sT()
{}
~cManger() = default;
int Value(int nNum);
int Init(int nNum1, int nNum2);
privata:
T m_sT;
Mangeer.cpp
#include"Manger.h"
template<typename T>
int CManger<T>::Value(int nNum)
{
int hr =m_sT.pValue(nNum);
return hr;
}
int CManger<T>::Init(int nNum1, int nNum2)
{
int hr=m_sT.pInit(nNum1, nNum2);
return hr;
}
main.cpp
#include<iostream>
#include"Manger.h"
#include"Type.h"
int main()
{
int a=1;
int b=5;
int nRet=0;
nRet=CManger<TYPE::TA>().Value(b);
nRet=CManger<TYPE::TB>().Value(b);