我正在尝试创建一种嵌入式语言来将插槽连接到成员信号。我已经查看了 boost 网站上的示例和教程,但我仍然完全迷失了,我什至不确定我想做的事情是否可行。
例如,如果我有一个这样的类,并定义了一个原型终端:
class test {
boost::signals2::signal<void()> _signal;
};
struct signal_tag { };
proto::terminal<test_tag>::type const signal_term;
我想知道如何将终端包装在一个表达式中,该表达式允许我_signal
使用如下语法将插槽连接到:
test t();
t > signal_term | some_slot;
或者,如果这是不可能的:
(t > signal_term)(some_slot);
计算表达式的结果应该是信号connect()
函数返回的连接。我希望我有更好的代码示例,但是我对 boost::proto 感到非常困惑,以至于我什至不知道从哪里开始。目标是保持信号成员的私密性,同时提供一种连接插槽的统一方式,而无需每次都编写新的连接函数。