c – 指向boost指针容器中元素的指针

我刚刚开始使用boost :: ptr_vector.我有一个ptr_vector pctr作为一个类A的成员,并希望另一个类B引用pctr中的元素.在构造B类对象时,我想在pctr中存储指针.

由于指针容器不允许访问指针(但仅允许访问引用),我必须从pctr获取引用的地址,然后将其存储在类型B的对象中.但是获取引用的地址似乎不直观.还有更好的选择吗?

最佳答案 正如您所发现的那样,增强指针容器可以很好地保护它们的指针.

当然,你可以通过获取它将产生的引用的地址来打败它,但要注意你可能通过挂在这些指针上来稀释指针容器声称权威所有权的强度(所有这些都取决于你的代码的其余部分)真).

替代方案似乎是:

>让B类保持迭代器引用感兴趣的指针容器元素(当然,通常的迭代器失效规则必须处理).
>由于A拥有指针并且您似乎希望B拥有某种非拥有的弱引用,所以请使用shared_ptr的容器,并让B使用weak_ptr.下行可能是每次表现.

点赞