gpt4 book ai didi

c++ - C++11 中的委托(delegate)

转载 作者:可可西里 更新时间:2023-11-01 15:07:07 24 4
gpt4 key购买 nike

C++11 是否提供委托(delegate)?

如果不是,那么在 C++ 中执行类似操作的最佳(最有效)方法是什么?升压信号?快速委托(delegate)?还有别的吗?

最佳答案

您可以使用 bind 将成员函数绑定(bind)到类实例,从而获得类似委托(delegate)的语义:

#include <functional>

struct C
{
void Foo(int) { }
};

void Bar(std::function<void(int)> func)
{
func(42); // calls obj.Foo(42)
}

int main()
{
using namespace std::placeholders;

C obj;
Bar(std::bind(&C::Foo, obj, _1));
}

在此示例中,Bar() 接受任何具有单个 int 参数并返回 void 的对象。

main() 中,我们将一个指向成员函数 C::Foo 的指针绑定(bind)到名为 C 实例对象。这为我们提供了一个可以使用单个 int 参数调用并返回 void 的对象。

我们用这个对象调用 Bar()Bar() 调用 obj.Foo(42)

关于c++ - C++11 中的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622672/

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