假设我的应用程序正在使用一个Server
具有回调的库对象,它在与客户端建立新连接时onConnected
传递对对象的引用;Connection
保留Server
所有权Connection
。我想Connection
在它关闭时销毁它(无论是本地还是远程),但我不确定如何最好地处理通知正在使用连接的应用程序。
显而易见的解决方案是立即进行某种onDisconnected
回调delete
,允许应用程序在尝试继续使用它时崩溃,或者将其传递shared_ptr
并让对象逗留直到应用程序清理它。这两种方法对我来说都不是特别好。前者只是感觉不安全,后者混淆了谁拥有连接的概念,如果应用程序忽略回调,则可能导致泄漏。
是否有一些我缺少的惯用解决方案,或者只是一种更好的方法?