我想實現字符串和函數的映射 我已經把我的程序的片段。使用boost的字符串和函數的映射給出編譯錯誤
我有以下實施
void foo1(const std::string)
void foo2(const std::string)
void foo3(const std::string)
typedef boost::function<void, const std::string> fun_t;
typedef std::map<std::string, fun_t> funs_t;
funs_t f;
f["xyz"] = &foo1;
f["abc"] = &foo2;
f["pqr"] = &foo3;
std::vector<std::future<void>> tasks;
for(std::string s: {"xyz", "abc", "pqr"}){
tasks.push_back(std::async(std::launch::async, f.find(f_kb)->second, s));
}
for(auto& task : tasks){
task.get();
}
它給我的錯誤就從這裏
usr/local/include/boost/function/function_template.hpp225:18: error: no match for call to '(boost::_mfi::mf1<void, Class sample, std::basic_string<char>>)(const std::basic_string<char> &)'
BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
需要有人能告訴我什麼是錯的代碼行
f["xyz"] = &foo1;
?
似乎缺少一些分號。 – owacoder
「沒有匹配的呼叫」到什麼?你忘了複製/粘貼錯誤信息嗎? –
嗨..我編輯的問題很抱歉模糊 –