方法指針是否有這樣做與升壓::結合和地圖
auto commodityOneLeg = boost::bind(&VegaFactory::load_commodity_one_leg,this,conn,_1);
std::map<std::string,decltype(commodityOneLeg)> methods;
methods.insert(std::make_pair("COMMODITYONELEG",commodityOneLeg));
methods.insert(std::make_pair("FXOPTION",boost::bind(&VegaFactory::load_fx_index,this,conn,_1)));
methods.insert(std::make_pair("FXBARROPT",boost::bind(&VegaFactory::load_fx_bar_opt,this,conn,_1)));
methods.insert(std::make_pair("COMMODITYINDEX",boost::bind(&VegaFactory::load_fx_index,this,conn,_1)));
auto f = methods.find(trade_table);
if(f != methods.end()) {
fx_opt = (f->second)(t_id);
}
的更好的方式有沒有聲明的std的類型的一種方法:地圖<>而無需在所述第一聲明一個映射上一行?我想我的意思是審美 - 代碼應該看起來整潔的權利?
當輸入是'交易類型'字符串時,是否有一種更簡單/更簡潔的方法來完成此C++字符串切換語句。
編輯
爲了進一步澄清。我可以手動寫出boost:bind類型的類型,但似乎過多。這可能是一個非常好的例子,可以使用auto和decltype來簡化代碼。 但是,必須以一種方式在地圖中聲明一個條目,而以另一種方式聲明其他條目只是看起來錯誤;所以這就是我想要解決的問題
也許你可以使用升壓信號? – bennofs