在C++的继承和多态中,下面这种代码可以简化吗?
COnDuty, CMemo, CNotice, CWeekReport 都继承自 CBase
void CMy::dispatchMod(void)
{
vector<string> deal;
if(m_szMod.compare("onduty") == 0){
COnDuty opMod;
if(m_szDo.compare("add") == 0){
opMod.addData();
result.push_back(opMod.getMessage());
}
if(m_szDo.compare("edt") == 0){
opMod.edtData();
result.push_back(opMod.getMessage());
}
}
if(m_szMod.compare("memo") == 0){
CMemo opMod;
if(m_szDo.compare("add") == 0){
opMod.addData();
result.push_back(opMod.getMessage());
}
if(m_szDo.compare("edt") == 0){
opMod.edtData();
result.push_back(opMod.getMessage());
}
}
if(m_szMod.compare("notice") == 0){
CNotice opMod;
if(m_szDo.compare("add") == 0){
opMod.addData();
result.push_back(opMod.getMessage());
}
if(m_szDo.compare("edt") == 0){
opMod.edtData();
result.push_back(opMod.getMessage());
}
}
if(m_szMod.compare("weekreport") == 0){
CWeekReport opMod;
if(m_szDo.compare("add") == 0){
opMod.addData();
result.push_back(opMod.getMessage());
}
if(m_szDo.compare("edt") == 0){
opMod.edtData();
result.push_back(opMod.getMessage());
}
}
deal(result);
}