我已定义类型函数,我已编写方法将此类型转换为对。 定义:
typedef std::map<std::string, std::pair<int,FunctionPtr>> Functions;
FunctionPtr和FunctionId:
typedef int(*FunctionPtr) (const std::vector<cv::Mat>&, cv::Mat&);
struct FunctionId
{
std::string name;
int nArguments;
};
我的方法:
pair<FunctionId,FunctionPtr> FunctionSet::conversion(Functions::const_iterator& it)
{
string name = it->first;
int argumentsNumber = it->second.first;
FunctionPtr function = it->second.second;
FunctionId id = {name, argumentsNumber};
return make_pair(id,function);
}
然后我在这里打电话:
pair<FunctionId,FunctionPtr> FunctionSet::getRandomFunction() const
{
Functions::const_iterator it = functions_.begin();
std::advance(it, rand() % functions_.size() );
pair<FunctionId,FunctionPtr> p = conversion(it); //in this line error
return p;
}
得到错误:
将'const FunctionSet'作为'this'参数传递会丢弃限定符 [-fpermissive]
note: in call to 'std::pair<FunctionId, int (*)(const std::vector<cv::Mat>&, cv::Mat&)> FunctionSet::conversion(std::map<std::__cxx11::basic_string<char>, std::pair<int, int (*)(const std::vector<cv::Mat>&, cv::Mat&)> >::const_iterator)' std::pair<FunctionId,FunctionPtr> conversion(Functions::const_iterator it);
^
FunciontSet是一个类名。