>>95
何がしたいかわからんが、Baseに任せた方がいいんじゃない?

class Base {
public:
virtual ~Base() { obj_.erase(find(obj_.begin(), obj_.end(), this)); }
virtual void F()=0;
static list<Base*> obj_;
};

class Derived : Base {
public:
void F() { delete this; }
};