C++11 Shared Ptr, использовать тот же счетчик ссылок
Можно ли иметь 2 разных объекта, которые имеют один и тот же счетчик ссылок?
Говорит у меня
shared_ptr<Foo> myFoo;
shared_ptr<Bar> myBar;
Я хочу, чтобы оба объекта оставались в живых, пока не будет одной ссылки на Foo или Bar (так что, возможно, никто не ссылается на Bar, но, поскольку на Foo есть ссылки, оба не будут удалены).
2 ответа
Решение
Хорошо, отлично, я нашел ответ: 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.
}
Поместите их в структуру и имейте shared_ptr
владеть этой структурой.
struct FooBar {
Foo f;
Bar b;
};
shared_ptr<FooBar> myFooBar;