"자식"객체의 수명을 관리하는 "부모"객체가 있습니다. 객체는 몇 가지 작업을 수행하고 완료되면 콜백을 통해 부모에게 신호를 보내고 파기 될 수 있음을 알립니다.자체 콜백에서 객체를 파괴하는 방법
장난감 예 :
#include <list>
class Child;
class IChildListener
{
public:
virtual void on_done(Child *child) = 0;
};
class Child
{
public:
Child(IChildListener *parent)
: m_parent(parent)
{
}
void do_stuff()
{
m_parent->on_done(this);
}
protected:
IChildListener *m_parent;
};
class Parent : public IChildListener
{
public:
void on_done(Child* child) {
m_children.remove(child);
delete child;
}
Child *create_child() {
Child* child = new Child(this);
m_children.push_back(child);
return child;
}
protected:
std::list<Child*> m_children;
};
int main(int argc, char** argv) {
Parent p;
Child *c = p.create_child();
c->do_stuff();
}
문제를 효과적으로 아이가 자신의 방법의 통화 중에 파괴하고 확실히 좋은 생각이 아니다,이다. 그런 일을하는 패턴이 있습니까?
http://stackoverflow.com/questions/3150942/c-delete-this –