所以我的 Bar
类中有这个方法:
std::shared_ptr<sf::Sprite> Bar::getStuff() const
{
//...
}
我有我的回调类型定义:
typedef std::function<void()> Callback;
void Foo::registerCallback(const Callback& callback)
{
//...
}
现在我想在此方法上使用 std::bind
,例如:
Foo foo;
Bar bar; //I create an instance of an Bar, called bar.
foo.registerCallback(std::bind(&Bar::getStuff, std::ref(bar))); //<--- ERROR!!!!
错误:
error C2562: 'std::_Callable_obj<std::_Bind<true,std::shared_ptr<sf::Sprite>,std::_Pmf_wrap<std::shared_ptr<sf::Sprite> (__thiscall Bar::* )(void)
如果我想用一个void方法,没问题。但我需要使用 getStuff()
方法,它会返回一个指向 sf::Sprite 事物的智能指针
。
我怎样才能做到这一点?
最佳答案
鉴于您使用的是 c++11,为什么不用 lambda?
foo.registerCallback([&bar]() { bar.getStuff(); });
关于c++ - 如何 std::bind 智能指针返回方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34277737/