所以我有这个方法我Bar
类中:如何将std :: bind一个智能指针返回方法?
std::shared_ptr<sf::Sprite> Bar::getStuff() const
{
//...
}
我有我的回调的typedef:
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()
方法,它将返回一个smart pointer
到sf :: Sprite的东西。
我该如何做到这一点?
尝试'的std ::绑定(酒吧:: getStuff,&巴)'代替,IIRC,'的std :: ref'不能在'INVOKE' –
@PiotrSkotnicki'bind'解开'reference_wrapper's使用独立于'INVOKE'。 (并且[LWG 2219](http://wg21.link/lwg2219)使得'INVOKE'无论如何都能和它们一起工作。) –
MSVC的哪个版本是这样的? –