【发布时间】:2012-10-26 17:47:03
【问题描述】:
我有以下代码:
struct STFRandomTreeFunction { typedef double (*function_ptr)(const STFDataPoint& data, boost::unordered_map& preloaded_images); };
struct STFRandomTreeFunctor
{
private:
boost::unordered_map<std::string, cv::Mat> *image_cache;
STFRandomTreeFunction::function_ptr function;
std::string function_id;
public:
STFRandomTreeFunctor(boost::unordered_map<std::string, cv::Mat>& cache, STFRandomTreeFunction::function_ptr function, std::string function_id)
:image_cache(&cache), function(function), function_id(function_id){}
std::string get_function_id(){
return function_id;
}
double operator()(const TrainingDataPoint& data_point){
return function(data_point, *image_cache);
}
};
unordered_map<string, STFRandomTreeFunctor> lut;
double a(const STFDataPoint& b, unordered_map<string, Mat>& c){
return 5;
}
int main(int argc, char* argv[]) {
unordered_map<string, Mat> cache;
lut["a"] = STFRandomTreeFunctor(cache, a, "a");
}
当我尝试构建时,出现以下错误:boost/unordered/detail/allocate.hpp:262:1: error: no matching function for call to ‘STFRandomTreeFunctor::STFRandomTreeFunctor()’
但我不知道为什么 boost 会尝试调用STFRandomTreeFunctor(),这是因为当我们创建空地图时,它会尝试创建一个 STFRandomTreeFunctor?如果是这样,我该如何解决这个问题?
谢谢
【问题讨论】:
标签: c++ boost initialization unordered-map