c++ delegate怎样支持多播

   2024-10-06 2810
核心提示:在C++中,要支持多播Delegate,可以使用std::function和std::vector结合使用。以下是一个简单的示例:#include iostream#include

在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 calledFunction 2 called

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号