class RefCountedBase { | |
protected: | |
bool derefBase() | |
{ | |
return true; | |
} | |
}; | |
template<typename T> class RefCounted : public RefCountedBase { | |
public: | |
void deref() | |
{ | |
if (derefBase()) | |
delete static_cast<T*>(this); | |
} | |
protected: | |
// RefCounted() { } | |
~RefCounted() | |
{ | |
} | |
}; | |
class Event : public RefCounted<Event> { | |
public: | |
Event(); | |
virtual ~Event(); | |
}; |