问题描述
我最近一直在搞混C ++中的事件系统,例如boost :: signals2和类似的库。它们似乎都有一个共同的局限性:它们实际上与移动语义无关。
如果将信号连接到作为对象成员的插槽,则它引用该对象的当前内存地址以调用该插槽。一旦该地址发生更改(例如,由于对象所在的std :: vector必须重新分配其内存数组),连接就会中断。它仍然指的是移出的地址。
对于如何正确使用此类信号/插槽库,我有些困惑。您是否真的需要确保插槽永远不会更改其位置,例如将其放置在堆上?还是有一种方法可以使信号自动知道已更改的插槽位置?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)