游戏事件池实现解释文档

概述

本文件提供了一个基于对象池的游戏事件池的实现。它包括一个模板类 GameEventPool 用于管理事件对象,以及一个抽象基类 GameEventBase 和一个模板类 GameEvent 用于定义和创建具体的游戏事件。

头文件

1
2
3
#include <stack>
#include <unordered_set>
#include <string>
  • <stack>: 提供了栈数据结构,用于存储事件对象。
  • <unordered_set>: 提供了哈希集合数据结构,用于快速查找和确保对象唯一性。
  • <string>: 提供了字符串类,用于存储事件信息。

GameEventPool 类模板

成员函数

Push(T* item)

  • 将一个事件对象推入池中。如果对象已存在,则不重复添加。

Get()

  • 从池中获取一个事件对象。如果池为空,则创建一个新的对象实例。

私有成员函数

Init(T* item)

  • 初始化事件对象。

静态成员变量

  • _pool: 存储事件对象的栈。
  • _poolSet: 存储事件对象的集合,用于确保对象唯一性。

GameEventBase 类

成员函数

~GameEventBase()

  • 虚析构函数,确保派生类的析构函数可以被正确调用。

static int GetEventId()

  • 生成并返回一个唯一的事件ID。

静态成员变量

  • _eventCount: 存储事件ID的计数。

GameEvent 类模板

成员函数

GameEvent()

  • 构造函数,如果事件ID尚未设置,则设置它。

Dispose()

  • 将当前事件对象推回池中。

static T* Get()

  • 从池中获取事件对象。

static void Push(T* item)

  • 向池中推入事件对象。

静态成员变量

  • eventId: 存储事件类型的ID。

MyEvent 类

  • 继承自 GameEvent<MyEvent>,表示一个具体的游戏事件。
  • 包含一个 message 成员变量,用于存储事件信息。

TEST1Event 类

  • 继承自 GameEvent<TEST1Event>,表示另一个具体的游戏事件。
  • 包含一个 message 成员变量,用于存储事件信息。

注意事项

  • 使用本文件时,需要确保依赖的库已经正确配置。
  • 在调用 GameEventPoolPushGet 函数时,需要检查输入参数的有效性。
  • 本文件中的某些函数可能存在性能瓶颈,请谨慎使用。