说,鉴于以下智能指针方案:间接多层次的智能指针
weak_ptr<Style> A -> weak_ptr<Style> B -> shared_ptr<Style> C
你可以改变第二weak_ptr的(B)点(观察)新的shared_ptr(C)的方式,将仍然使第一个weak_ptr(A)看到新改变的shared_ptr(C)?
希望是有道理的。考虑到weak_ptr在这种情况下可以提供的安全性,我想远离原始指针。
编辑:
重新阅读Boost文档后,我认识到了weak_ptr运营商=本质上只是复制另一个weak_ptr的,而不是真正使得观察其他的weak_ptr。所以你不能没有原始指针就有这种间接性?
编辑2:
为了扩大我的问题:我有一个Label
和Glyph
。 A Label
是Glyph
的容器。一个标签有shared_ptr<Style>
,字形有weak_ptr
这种风格。我的意图是允许对样式进行快速更改,而不用实际遍历所有标签字形。所以我在考虑在Label
中有另一种“积极”的风格(如风格铅笔),并让所有的字形指向铅笔的东西。所以无论什么时候我需要更改样式,我只需将铅笔重新分配给新的Style对象。这可以只用智能指针来完成,或者我需要在某个地方混合一个原始指针?
我很抱歉,但对我来说这没有意义 - 你能表达你的意图吗? – 2012-01-11 10:55:12
用更多的信息更新了这个问题:) – Sim 2012-01-11 11:25:45