是否可以有2个不同的对象共享同一个参考计数器?
我说
shared_ptr<Foo> myFoo;
shared_ptr<Bar> myBar;
我希望两个对象都存活,直到有一个对Foo或Bar的引用(所以可能没有人引用Bar,但是因为引用Foo都不会被删除)。
答案 0 :(得分:7)
将它们放在一个结构中,让shared_ptr
拥有该结构。
struct FooBar {
Foo f;
Bar b;
};
shared_ptr<FooBar> myFooBar;
答案 1 :(得分:0)
好的,我找到了答案: http://www.codesynthesis.com/~boris/blog/2012/04/25/shared-ptr-aliasing-constructor/
别名构造函数! (代码取自链接)
struct data {...};
struct object
{
data data_;
};
void f ()
{
shared_ptr<object> o (new object); // use_count == 1
shared_ptr<data> d (o, &o->data_); // use_count == 2
o.reset (); // use_count == 1
// When d goes out of scope, object is deleted.
}