潜心灌水……在写一个四则运算的小东西……想用上WTL的思想……嘿嘿
class CMyCalc : public CCalculateImpl<CMyCalc,double,CCalculateTraits>
{
public:
DECLATE_CALC_NAME("My Calc:")
BEGIN_OPT_MAP(CMyCalc)
ADD_CALC_OPT("+",2,AddOpt)//操作符名称,优先级,处理函数
ADD_CALC_OPT("-",2,SubOpt)
ADD_OPT("*",OPT_LEFT,1,2,MulOpt)//操作符名称,结合方向,优先级,元,处理函数
ADD_OPT("/",OPT_LEFT,1,2,DivOpt)
ADD_BINARY_SEP("(",")",1,RoundSep)//左分隔符,右分隔符,分隔符优先级,处理函数
END_OPT_MAP()
double AddOpt(double lv,double rv)
{
return lv+rv;
}
//...
};
int main(void)
{
CMyCalc calc;
calc.SetFormula("(1+2)*3");
cout<<calc;
return 0;
}
[[it] 本帖最后由 StarWing83 于 2008-4-17 15:05 编辑 [/it]]
class CMyCalc : public CCalculateImpl<CMyCalc,double,CCalculateTraits>
{
public:
DECLATE_CALC_NAME("My Calc:")
BEGIN_OPT_MAP(CMyCalc)
ADD_CALC_OPT("+",2,AddOpt)//操作符名称,优先级,处理函数
ADD_CALC_OPT("-",2,SubOpt)
ADD_OPT("*",OPT_LEFT,1,2,MulOpt)//操作符名称,结合方向,优先级,元,处理函数
ADD_OPT("/",OPT_LEFT,1,2,DivOpt)
ADD_BINARY_SEP("(",")",1,RoundSep)//左分隔符,右分隔符,分隔符优先级,处理函数
END_OPT_MAP()
double AddOpt(double lv,double rv)
{
return lv+rv;
}
//...
};
int main(void)
{
CMyCalc calc;
calc.SetFormula("(1+2)*3");
cout<<calc;
return 0;
}
[[it] 本帖最后由 StarWing83 于 2008-4-17 15:05 编辑 [/it]]