gpt4 book ai didi

c++ - 如何 std::bind 智能指针返回方法?

转载 作者:行者123 更新时间:2023-11-30 01:45:40 25 4
gpt4 key购买 nike

所以我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com