C++ 是否有具有基本反射的轻量级信号槽实现?

C++ 是否有具有基本反射的轻量级信号槽实现?,c++,C++,背景 我需要实现一个动态可配置的数据处理工具包。将有几个数据处理实体,它们可以通过使用GUI工具组合成数据流图。 这个想法类似于直接显示过滤图Graphidit或苹果的石英作曲器 GUI工具将图形定义存储在文件中。当实际处理开始时,将读取此定义文件,并且必须在运行时创建和连接数据处理对象 我以前使用过Qt的信号和插槽来解决类似的问题,但这次主程序没有任何GUI。所以我想用一些不太臃肿的东西 问题: 在不使用Qt的情况下,使用基本反射实现信号/插槽功能的最简单方法是什么 我需要定义固定数量的插槽类

背景

我需要实现一个动态可配置的数据处理工具包。将有几个数据处理实体,它们可以通过使用GUI工具组合成数据流图。 这个想法类似于直接显示过滤图Graphidit或苹果的石英作曲器

GUI工具将图形定义存储在文件中。当实际处理开始时,将读取此定义文件,并且必须在运行时创建和连接数据处理对象

我以前使用过Qt的信号和插槽来解决类似的问题,但这次主程序没有任何GUI。所以我想用一些不太臃肿的东西

问题:

在不使用Qt的情况下,使用基本反射实现信号/插槽功能的最简单方法是什么

我需要定义固定数量的插槽类型,每个插槽类型都带有特定的预定义函数签名。 例如,将有一个图像消费槽,将图像对象作为参数,或者一个槽仅将int作为参数

在运行时,我需要遍历所有信号/插槽并动态连接它们

我不需要在运行时检查插槽/信号参数。有固定数量的参数集就足够了。可以在插槽的名称中添加某种提示来标识签名类型


我知道boost附带signal2,它提供信号/插槽功能。但是实现反射的最快方法是什么?我应该建立我自己的一套宏破解吗?

我还没有使用过它,但它似乎具备了您需要的反射和信号/插槽的所有功能。

我相信您可以使用Qt来开发非GUI工具。AFAIR,强氧使用Qt。但我还没有自己使用Qt。 还有一个建议是,除非你准备投入大量的时间和精力,否则你不应该实施你的反射系统。你可以在你的应用程序中实现一个肮脏的快速反射系统,但是随着应用程序的发展,你可能会发现你需要更多的时间来维护或改进它。 也可以忘记反射宏。宏太难看,也太容易出错。
对于我的cpgf库,我是作者,我还没有准备好推广它,因为它在不到一年的时间里是全新的,不像其他库那么成熟。然而,我真的很感激任何真实的项目使用它来验证它在真实世界中的工作,而不仅仅是在单元测试中工作。我想为修复bug之类的项目提供必要的帮助

Boost还具有信号和插槽的实现

您知道Qt的信号和插槽在非中,因此根本不需要包含或链接到GUI库,是吗?