有没有办法将升压信号直接连接到另一个信号?

2023-12-22

我想知道是否有更好的方法将一类的升压信号直接连接到另一类的信号?

例如想象一个门面类 https://stackoverflow.com/questions/249581/explain-facade-pattern-with-c-example有一群提供自己信号的成员。现在假设外观想要公开这些信号。我通常最终会编写样板方法,然后将其连接为信号处理程序。

using namespace boost::signal;

class A
{
public:
  A(){};
  virtual ~A(){};

  signal<void()> signalA;
};

class B
{
public:
  B(){};
  virtual ~B(){};

  signal<void()> signalB;
};

class Facade
{
private:
  A& a;
  B& b;

public:
  Facade(A& refA, B& refB) 
  : a(refA), b(refB) 
  {
    // connect A's signal to facadeSignalA
    a.signalA.connect(boost::bind(&Facade::forwardedSignalA, this));
    // connect B's signal to facadeSignalB
    b.signalB.connect(boost::bind(&Facade::forwardedSignalB, this));
  }
  virtual ~Facade() {};

  // user visible signals
  signal<void()> facadeSignalA;
  signal<void()> facadeSignalB;

private:
  // ugly boilerplate code used to forward signals
  void forwardedSignalA()
  {
    facadeSignalA();
  }
  void forwardedSignalB()
  {
    facadeSignalB();
  }
};

现在这不是很优雅,并且在一段时间后变得非常乏味。有没有一种方法可以做到这一点而不必编写这些转发方法?


是的,事实证明您可以直接“链接”信号。请参见这个线程 https://groups.google.com/forum/#!topic/boost-list/So4i8JXneJ0。它没有记录,但似乎是一个非常有用的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法将升压信号直接连接到另一个信号? 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li

随机推荐

  • 如何使用 DataBinder.Eval 在 gridview 中选中复选框

    我正在尝试检查一个复选框 基本上在我的数据库中该值是否为 1 或 0 一个叫做Active bit not null 我可以将值传递给gridview 但现在我试图检查该位是否为1 或者如果该位为0则不检查但它不起作用 它只是显示未检查但该
  • 自动保存您正在处理的文件?

    可以让 Eclipse 自动保存您已打开和正在处理的文件 并且这样做不会触发任何与保存挂钩的操作吗 Windows gt 首选项 gt 常规 gt 工作区 gt 工作区保存间隔 以分钟为单位 中的选项是否执行此操作 您可以使用智能保存 它是
  • 我可以在 IPAD 中运行 html/Javascript 文件吗?

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个文件夹 其中有一个 html 文件夹和 javascript 文件 我可以在没有互联网的情况下在 ipad 中仅从文件系统运行该 html 页
  • MVC3 AntiForgeryToken 问题

    我正在尝试为我的 MVC3 应用程序实现 AntiForgeryToken 设置 FormAuthentication cookie 后 我遇到 AntiForgeryToken 问题 这是一个解释我的问题的简单示例 我的家庭控制器具有以下
  • apache tomcat catalina 作为 CORS 过滤器的 Maven 依赖项

    我在我的网络应用程序中使用 org apache catalina filters CorsFilter 所以我指定了maven依赖
  • 获取数组类型记录字段的长度

    我正在编写一个包装器用于与外部二进制 API 进行通信 API 使用 PDU 打包二进制记录 进行通信 字符串是 AnsiChar 数组并且以零结尾 type TSomePDU packed record StringField array
  • 如何在java Hibernate中更新主键

    我正在研究 Mvc 架构 我有 pojo 对象 我想更改主键 请你帮帮我 主键是 varchar 前任 Users users usersDao load mark 您永远不应该更改主键的值 主键定义了对象的身份 如果主键已更改 Hiber
  • PHP SOAP客户端调用带参数函数

    我创建了一个 SOAP 客户端 如下所示 client new SoapClient file wsdl 然后当我想调用API函数时 client gt Authenticate user password 我收到以下错误 格式化程序在尝试
  • 如何从 QuickBook(.qbw) 文件中查询一些数据?

    情况 我是 QuickBooks 世界的新手 我有一个 qbw文件 gt 公司名称 qbw 这是一个巨大的文件 几乎包含了有关我公司的所有信息 我要查询some该文件中的数据 不是全部 而是一些 假设我只想查询inventory repor
  • 球体上密度最高的位置

    我在球体表面有很多点 如何计算具有最大点密度的球体的面积 点 我需要非常快地完成这件事 例如 如果这是一个正方形 我想我可以创建一个网格 然后让点投票网格的哪一部分是最好的 我尝试将这些点转换为球面坐标 然后制作网格 这两种方法都效果不佳
  • 媒体播放器/录音机(声子)

    我想开发一个媒体播放器 录音机 主要目标平台是Windows 支持其他操作系统就更好了 但这不是一个高优先级 它应该能够播放 wav mp3 avi 等格式 它还应该能够录制音频 麦克风 和视频 网络摄像头或采集卡 由于我对 QT 和 C
  • 嵌入式软件 Misra 标准

    我需要使大量代码符合 MISRA 要求 第一个问题 有人可以给一个估计用于根据经验传递编写良好的嵌入式系统代码 我知道 写得好 的定义不明确且模糊 所以我要求进行原始估计 第二个问题 对可定制 即允许抑制特定警告 并在自动构建环境 即命令行
  • iOS:UIDatePicker“删除”最小和最大日期之外的日期

    我编写了一个简单的 UIDatePicker 其中包含最小和最大日期 我希望日期选择器不显示不可用的日期 而不仅仅是禁用它们 实际 您可以滚动浏览所有不可用的日期 但是当您停留在不可用的日期时 日期选择器会滚动到最接近的可用日期 这很好 但
  • 我的函数输入周围的这个框是什么?

    每当我编写自动完成的函数调用并开始输入内容时 就会在输入周围绘制一个黑色矩形 如下所示 为什么 eclipse 会这样做以及如何将其关闭 我查看了不同的编辑器设置 但没有找到任何描述此行为的内容 This is called place h
  • 这句话是什么意思? printf("[%.*s] ", (int) 长度[i],

    我正在阅读此页http dev mysql com doc refman 5 0 en mysql fetch row html http dev mysql com doc refman 5 0 en mysql fetch row ht
  • 为什么 git 无法在 Visual Studio Code 中运行?

    我已经在我的项目中安装了哈士奇 然后我跑了precommit命令 现在 当我运行git命令 它不起作用 而是问我你想如何打开该文件 所以 我使用删除了哈士奇npm prune然后从中删除 hooks 文件夹 git项目目录 但仍然没有帮助
  • 有没有办法调整 UITabBar 按钮项目的宽度以适应屏幕上超过 5 个按钮?

    我的按钮似乎被拉长了 尤其是在横向方向上 我无法在 UITabBar UITabBarViewController 或 UITabBarItem 本身上找到可调整的属性 当然 一个答案是购买 iPad 但这并不能解决对手机的需求 例如 考虑
  • 如何将事件附加到表单的 onSubmit 事件并链接早期附加的方法?

    我的申请有数百页 现在我必须附加一个事件disablePage on onSubmit的形式 我不想翻到每一页并写下
  • 疯狂中的 CheckoutController#edit 在哪里?

    我需要玩editCheckoutController 的操作 我在服务器日志中看到它 我在文档 http edgeguides spreecommerce com checkout html但我在 gem 的代码中找不到它 魔力在哪里 狂欢
  • 有没有办法将升压信号直接连接到另一个信号?

    我想知道是否有更好的方法将一类的升压信号直接连接到另一类的信号 例如想象一个门面类 https stackoverflow com questions 249581 explain facade pattern with c example