c++ - 从另一个类中调用以 void* 作为参数的函数
问题描述
我的事件管理器有以下代码:
#pragma once
namespace EventManager {
enum class EventType {
OnUpdate,
OnDraw,
Size
};
extern std::vector<void*> EventCallbacks[(unsigned int)EventType::Size];
void AddEventHandler(EventType eventId, void* callback);
void RemoveEventHandler(EventType eventId, void* callback);
template <typename... Args>
void Trigger(EventType eventId, Args... args) {
for (auto callback : EventCallbacks[(unsigned int)eventId]) {
static_cast<void(*)(Args...)>(callback)(args...);
}
}
template <typename... Args>
bool TriggerProcess(EventType eventId, Args... args) {
auto process = true;
for (auto callback : EventCallbacks[(unsigned int)eventId]) {
if (!static_cast<bool(*)(Args...)>(callback)(args...)) {
process = false;
}
}
return process;
}
}
我正在尝试从另一个类中调用 EventManager::AddEventHandler ,但出现以下错误:
如果我尝试从命名空间而不是类中执行此操作,它工作正常,但我似乎无法弄清楚如何从此类内部使其工作。
解决方案
推荐阅读
- android - 使用expo在android设备中打开反应本机应用程序时出错
- python - 根据给定条件将新列添加到现有数据框列
- django - django设置默认时区
- reactjs - 已解决:我试图在反应中将更新数据从父级传递给子级,但它没有在子组件的功能中更新
- database - Mongoose:TypeError:模式路径`guildId.type`的值无效,得到值“未定义”
- javascript - 仅用于数据结构和数据库的前端(React)解决方案
- python - 如何转换宽数据框以绘制特定数据
- regex - 正则表达式在文本文件中突出显示高于 85% 红色的百分位数
- flyway - 如何创建脚本或 Flyway 可以配置为每次使用 SQL 回调调用它?
- spartacus-storefront - 斯巴达克斯 2.1.9 在 2.0.0 之后的购物车效果问题