我正在尝试创建一种嵌入式语言,以将插槽连接到成员信号。我已经看过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感到困惑,甚至不知道从哪里开始。目的是在保持信号成员私有的同时,提供一种统一的插槽连接方式,而不必每次都编写新的连接功能。