在C++中,要支持多播Delegate,可以使用std::function和std::vector结合使用。以下是一个简单的示例:
#include#include #include // 定义一个Delegate类型 typedef std::function 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 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