目录
- 0 引言
- 1 函数指针模拟多播委托
- 🙋♂️ 作者:海码007
- 📜 专栏:UE虚幻引擎专栏
- 💥 标题:【UE 委托】如何利用函数指针理解委托的基本原理
- ❣️ 寄语:书到用时方恨少,事非经过不知难!
- 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。
0 引言
今天在学习函数指针的时候想到了委托实现的基本原理,接下来简单的复现一下。
1 函数指针模拟多播委托
首先使用typedef定义了一种类型的函数指针。然后创建以绑定委托的函数集合 Slots。然后在委托调用时,遍历 Slots 集合,依次调用绑定的消息函数。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
typedef void (*SlotPtr) ();
vector<SlotPtr> Slots;
void Delegate()
{
// 发出广播
cout << "Call Delegate" << endl;
for (auto Slot : Slots)
{
Slot();
}
}
void Slot1()
{
cout << "Slot1" << endl;
}
void Slot2()
{
cout << "Slot2" << endl;
}
int main()
{
// 模拟绑定过程
Slots.emplace_back(Slot1);
Slots.emplace_back(Slot2);
// 模拟广播
Delegate();
return 0;
}