在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