所以我有這個方法我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的哪個版本是這樣的? –