Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

std::bind no viable conversion

Tags:

c++11

functor

I created a pathfind algorithm where i can set the heuristic method. But i am using a

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

As my function pointer and i want to initialize it with my default heristic.

So:

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

But it returns the same error:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:1472:15: Candidate function not viable: no known conversion from 'int (Core::Pathfind::*)(Point2i, Point2i)' to 'const std::__1::function, sf::Point2)>' for 1st argument

why it tries to convert from int(Core::Pathfind::*) ?

Thanks.

like image 372
Lefsler Avatar asked Feb 10 '26 14:02

Lefsler


1 Answers

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

Every argument that you don't supply has to be indicated via a placeholder.

like image 107
Columbo Avatar answered Feb 17 '26 03:02

Columbo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!