Я уверен, что есть стандартный способ решения этой проблемы, но я не могу его найти.
У меня есть класс Processor
, который управляет продолжительностью жизни всех объектов. Foo
может иногда назначаться Bar
. Но Bar
нужно знать, когда Foo
больше не доступен (был удален Processor
). Как правильно достичь этого?
class Processor {
private:
vector<unique_ptr<Foo>> foos;
vector<unique_ptr<Bar>> bars;
};
class Bar {
public:
void AssignFoo(Foo* foo){ cur_foo = foo; }
private:
Foo* cur_foo = nullptr;
};
Один из вариантов, который я могу придумать, - это иметь map
в Processor
, который отслеживает назначения, и иметь функцию RemoveFoo
вBar
но мне интересно, есть ли другой способ.