将'const FunctionSet'作为'this'参数传递给我的类型丢弃限定符[-fpermissive]

时间:2016-03-02 21:27:16

标签: c++ iterator const

我已定义类型函数,我已编写方法将此类型转换为对。 定义:

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是一个类名。

0 个答案:

没有答案