【问题标题】:std::bind no viable conversionstd::bind 没有可行的转换
【发布时间】:2014-12-08 15:55:05
【问题描述】:

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

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();
}

路径查找.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)>' 第一个参数

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

谢谢。

【问题讨论】:

    标签: c++11 functor


    【解决方案1】:
    using namespace std::placeholders;
    heuristicFunc = std::bind(&Pathfind::hMethod, this, _1, _2);
    

    您未提供的每个参数都必须通过占位符指示。

    【讨论】:

    • 老兄,那太好了,我会在允许时接受答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多