【发布时间】:2010-10-11 14:20:29
【问题描述】:
我明白为什么 boost::signal 是不可复制的(这是因为复制信号没有明确的含义),但我需要一个确实提供 一些 类型的复制 ctor 的版本(或者无操作或复制所有连接的操作)。
我需要这个的原因是因为在我的项目中,许多对象变得不可复制仅仅凭借特征信号,并且用舒适的值语义来对待它们(shared_ptrs 不是一样舒服)我需要手动提供复制操作符,这违反了 DRY。显然,一种准可复制的信号将是解决 C++ 丑陋的一个很好的解决方法。
想到的第一个解决方案是继承 signal 并在派生类中提供一个复制 ctor,但这是不行的,因为 signal 没有虚拟 dtor。
想法?
【问题讨论】:
-
复制信号的问题是任何和所有
connection对象都将引用旧信号。请记住这一点!
标签: c++ boost-signals noncopyable