【发布时间】:2014-04-29 07:15:44
【问题描述】:
我有类似的情况:
class A
{
public:
A(shared_ptr<B>);
}
class B : public enable_shared_from_this<B>
{
const shared_ptr<A> a;
}
在构造之前我不能有shared_ptr 到B,所以在初始化a 之前。所以,我需要在构造之后初始化我的常量字段(我认为它拒绝 RAII),或者只是稍后再构造它(所以它不能是 const,所以它否认 const 正确性,并且看起来也不太一致RAII)。
这看起来很常见。有没有最干净的方法来处理这个?你会怎么做呢?
【问题讨论】:
-
这就是我不广泛使用 std::shared_ptr 的原因。
-
为什么有一个 const 成员?
-
恕我直言,
A和B之间的循环依赖关系表明应该有另一种解决方案,这两种类型之间的耦合较少。 -
@Nobody 对,A 应该在构造函数中获取 weak_ptr,我忘记了循环。我从智能指针开始。
-
我什至不谈论智能指针,我认为
std::weak_ptr不会解决我正在谈论的问题:看起来错误的代码依赖关系。在没有看到实际代码的情况下,我对此无话可说。
标签: c++ c++11 shared-ptr raii weak-ptr