构造函数中这样写:
ParaParser::ParaParser()
{
m_handles.push_back(new ShowVersionParaHandler());
m_handles.push_back(new SFtpsParaHandler());
}
使用场景:
bool ParaParser::Handle(const std::map<std::string, std::string>& paras)
{
map<string, string> updateParas;
for (std::vector<ParaHandler*>::iterator it = m_handles.begin(); it != m_handles.end(); ++it)
{
if ((*it != NULL) && (*it)->IsMatch(paras))
{
if ((*it)->Check(paras, updateParas) && (*it)->Handle(updateParas))
{
return true;
}
}
}
cout << "Parameter error." << endl;
return false;
}
我大概明白这样写的目的是循环匹配
类ShowVersionParaHandler()和 类SFtpsParaHandler()中的IsMatch()方法、Check()方法、和Handle()方法
但是心中还是比较模糊,所以想学习一下其中的知识点和思想。
知识点:map是映射,vector是动态数组
ParaHander是基类,ShowVersionParaHandler和SFtpsParaHandler都是它的子类
动态数组m_handles记录基类指针
用for循环进行遍历