简单的模块系统(回调)
Simple module system (callbacks)
我正在尝试制作一个简单的模块引擎,但我真的不知道从哪里开始,我想创建这样的东西:
int awesomefunction() {
// do something here
execute_awesomefunction_callbacks_here();
// some more stuff
}
*execute_awesomefunction_callbacks_here();* 将执行 std::vector 中的所有函数
关于如何实现这一目标的任何想法?或者有更好的方法可以做到这一点吗?
您可以使用 std::function
的std::vector
来实现它。唯一的约束是所有函数对象都必须具有兼容的返回类型和参数类型。
class Publisher {
public:
void registerSubscriber(std::function<int(int, double)> callback) {
callbacks_.push_back(callback);
int executeAwesomeFunction() const {
// loop over vector calling each function object.
}
private:
std::vector<std::function<double(int,double)>> callbacks_;
}
这需要 C++11 支持,但您可以使用 boost::function 实现相同的目标。
相关文章:
- 架构决策:返回std::future还是提供回调
- 正在为Xtensa simcall函数编写回调函数
- 如何在C++中使用非静态成员函数作为回调函数
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 用于在回调中调用解析器的设计模式
- 如何使用C++对象的成员函数作为 C 样式回调?
- Java从C++回调到C++回调
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 从不同的 cpp 调用回调函数会导致bad_function_call
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 不带轮询的 SDL2 事件回调
- C++存储带有可变参数的回调
- 带有参数的嵌入式系统上的最小c++回调
- 如何使用std::bind向信使系统添加成员回调
- 简单的模块系统(回调)
- C++回调系统
- 如何在c++中使用boost实现与系统时间无关的计时器回调
- 为菜单系统实现lua回调
- 消息传递系统:回调可以是任何东西