Скажем, у меня есть класс:Детектирование если объект еще активен, или он был уничтожен
class Foo {
public:
int a;
}
Этот класс конкретизируется через new
оператора и уничтожены с помощью delete
оператора на объект B класса Bar.
Если объект B класса Bar, создает новый объект A класса Foo, а затем он передает указатель объекта A объекту C класса Baz. Если объект B класса Bar был удален самостоятельно, то как может объект C класса Baz обнаружить, если объект A активен или был удален. Примечание: это очень маленькая встроенная система, поэтому никакие библиотеки не могут использоваться, даже не std. См. Диаграмму последовательности ниже.
|------| |------|
| B:Bar| | C:Buz|
|------| |------|
|| |-------| ||
||---New--->| A:Foo | ||
|| |-------| ||
|| || ||
|| || ||
||-----C:Buz.set_foo_Ptr(&A:Foo);----->||
|| || ||
||---Delete--->X ||
|| ||
X (B:Bar Self Deleted) ||
||
(Can C:Buz know if A:Foo
has been deleted or not ?)
Похоже, хороший кандидат на ['std :: weak_ptr'] (http://en.cppreference.com/w/cpp/memory/weak_ptr) – CoryKramer
Я не знаю, что стандарт говорит об этом использовании, но будет ли динамичная работа (и надежно)? – donjuedo
Вам это нужно * не * быть удаленным? Или удаляет потенциально нормально? – Barry