销毁其他人引用的对象

spe*_*rcw 1 c++

假设我的应用程序正在使用一个Server具有回调的库对象,该回调在与客户端建立新连接时onConnected传递Connection对象的引用; 该Server保留的所有权Connection.我想破坏它Connection何时关闭(无论是本地还是远程),但我不确定如何最好地处理通知正在使用连接的应用程序.

显而易见的解决方案是进行某种onDisconnected回调,或者delete立即进行,允许应用程序在尝试继续使用时崩溃,或者将其传递shared_ptr给对象,直到应用程序清理它为止.这些方法对我来说都不是特别好.前者只是觉得不安全,后者混淆了谁拥有连接的概念,如果应用程序忽略了回调,则可能发生泄漏.

我是否缺少一些惯用的解决方案,或者只是一种更好的方法?

Luc*_*ore 5

对我来说似乎没有人是对象的明确拥有者,所以我会选择使用shared_ptr.IMO正是你需要它的那种情况.