std :: bind没有可行的转换

时间:2014-10-14 00:26:18

标签: c++11 functor

我创建了一个pathfind算法,我可以在其中设置启发式方法。 但我正在使用

function<int (Point2i origin, Point2i destiny)> heuristicFunc;

作为我的函数指针,我想用默认的heristic初始化它。

所以:

Pathfind.h

class Pathfind{
    private:
        function<int (Point2i origin, Point2i destiny)> heuristicFunc;
        int hMethod(Point2i origin, Point2i destiny);
    public:
      Pathfind();
}

Pathfind.cpp

Pathfind::Pathfind(){
    //1st try
    this->heuristicFunc=&Pathfind::hMethod;
    //2nd try
    this->heuristicFunc=std::bind(&Pathfind::hMethod, this);
}

但它返回相同的错误:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c ++ / v1 / functional:1472:15:候选函数不可行:没有已知的转换来自'int(Core :: Pathfind) :: *)(Point2i,Point2i)'到'const std :: __ 1 :: function,sf :: Point2)&gt;'第一个参数

为什么它尝试从int转换(Core :: Pathfind :: *)?

感谢。

1 个答案:

答案 0 :(得分:11)

using namespace std::placeholders;
heuristicFunc = std::bind(&Pathfind::hMethod, this, _1, _2);

您提供的每个论点都必须通过占位符来表示。