首页 > 解决方案 > 如何使用 boost::proto 将插槽连接到信号

问题描述

我正在尝试创建一种嵌入式语言来将插槽连接到成员信号。我已经查看了 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 感到非常困惑,以至于我什至不知道从哪里开始。目标是保持信号成员的私密性,同时提供一种连接插槽的统一方式,而无需每次都编写新的连接函数。

标签: c++boostboost-proto

解决方案


推荐阅读