温馨提示×

c++ delegate怎样支持多播

c++
小樊
84
2024-07-16 00:02:53
栏目: 编程语言

在C++中,要支持多播Delegate,可以使用std::function和std::vector结合使用。以下是一个简单的示例:

#include <iostream>
#include <functional>
#include <vector>

// 定义一个Delegate类型
typedef std::function<void()> Delegate;

// 定义一个多播Delegate类
class MultiDelegate {
public:
    // 添加Delegate到多播列表
    void addDelegate(Delegate delegate) {
        delegates.push_back(delegate);
    }

    // 触发所有Delegate
    void invoke() {
        for (auto& delegate : delegates) {
            delegate();
        }
    }

private:
    std::vector<Delegate> delegates;
};

// 测试例子
void func1() {
    std::cout << "Function 1 called" << std::endl;
}

void func2() {
    std::cout << "Function 2 called" << std::endl;
}

int main() {
    MultiDelegate multiDelegate;

    // 添加两个函数到多播Delegate
    multiDelegate.addDelegate(func1);
    multiDelegate.addDelegate(func2);

    // 触发所有Delegate
    multiDelegate.invoke();

    return 0;
}

在这个例子中,我们首先定义了一个Delegate类型,然后定义了一个多播Delegate类MultiDelegate,其中使用了一个std::vector来存储所有的Delegate。我们可以通过addDelegate方法向MultiDelegate中添加多个Delegate,然后通过invoke方法触发所有Delegate。

在main函数中,我们创建了一个MultiDelegate对象multiDelegate,并添加了两个函数func1和func2到多播Delegate中。最后调用multiDelegate的invoke方法触发所有Delegate,输出结果为:

Function 1 called
Function 2 called

0