我创建了一个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 :: *)?
感谢。
答案 0 :(得分:11)
using namespace std::placeholders;
heuristicFunc = std::bind(&Pathfind::hMethod, this, _1, _2);
您提供的每个论点都必须通过占位符来表示。