使用宏来生成类模板

来源:互联网 发布:实用seo教程 编辑:程序博客网 时间:2024/04/29 03:03
templeteCalc.htemplate<class T>class Calc{public:Calc(T Oper1, T Oper2):m_Oper1(Oper1),m_Oper2(Oper2){}virtual ~Calc(){}virtual T GetResult() = 0;protected:T m_Oper1;T m_Oper2;};#define FactoryOper(ClassName, Type, Oper)\class ClassName:public Calc<Type>\{\public:\ClassName(Type Oper1, Type Oper2):Calc<Type>(Oper1,Oper2){}\virtual ~ClassName(){}\Type GetResult()\{\return m_Oper1##Oper##m_Oper2;\}\};

main.cpp


#include "stdio.h"#include "templeteCalc.h"template <class Type>FactoryOper(AddOper,Type, +)template <class Type>FactoryOper(ReduceOper,Type, -)template <class Type>FactoryOper(MultiOper,Type, *)template <class Type>FactoryOper(DevideOper,Type, /)#define Class_Type  intint main(){AddOper<Class_Type> add(1,2);Calc<Class_Type> *calc = &add; printf("%d",calc->GetResult());return 0;}



原创粉丝点击