今天在工作上遇到一个问题,觉得很有代表性,特抽象如下:
通过设计模式的角度来说,就是模板方法,已经有一个基类,需要定义很多子类来实现其方法。
但是类名都只有一部分不同,且构造函数的入参也只有一部分不同。
如代码:
以下是代码片段:
#include
#include
#include
#include
#include
using namespace std;
class EMA
{
public:
EMA(string a,string b,string c,string d,string e)
{
cout < }
};
#define EMACLASS_DEFINITION(class_name)\\
class EMA4CGI_##class_name:public EMA{\\
public:\\
EMA4CGI_##class_name():EMA(\\
\"app_mng.\"#class_name\"_EMA_AVG\",\\
\"app_mng.\"#class_name\"_EMA_HWM\",\\
\"app_mng.\"#class_name\"_EMA_TMO\",\\
\"app_mng.\"#class_name\"_EMA_N\",\\
\"app_mng.\"#class_name\"_EMA_RATIO\"\\
){}\\
~EMA4CGI_##class_name() {}\\
};
EMACLASS_DEFINITION(1ST)
EMACLASS_DEFINITION(2ND)
EMACLASS_DEFINITION(3RD)
int main(int argc, const char *argv[])
{
EMA4CGI_1ST();
EMA4CGI_2ND();
EMA4CGI_3RD();
return 0;
}