【发布时间】:2011-10-24 08:05:43
【问题描述】:
我正在处理一个使用回调系统的模块,该系统实现得不是很好。客户端正在使用一个 ID 注册,并将使用一个变量(或两个,或无)回调。问题是几乎每个 ID 都是不同的变量。 (例如:Id1 -> char*,Id2 -> int)。这是通过通过指针传递变量来实现的。所以回调看起来像
typedef void (*NotifFunctionPtr)(void* ctx, const void* option);
这种方法有很多问题,我想用一种(类型)安全且现代的方式来处理它。然而这并不像看起来那么简单,我有一些想法(like boost::function 或用封装类型和 ptr 的结构替换 void*)但我认为也许有更好的想法,所以我想知道 在 C++ 中设置类型安全回调的现代方法是什么。
编辑:另一个想法是通过模板函数注册一个类型为 T 的回调,该模板函数使用相同的类型 T 进行回调。这是否可行或在某个库中实现?
【问题讨论】:
标签: c++ templates boost callback