Prevent accidentally copy/move of refcounted objects

This commit is contained in:
sfan5 2024-08-29 16:13:30 +02:00
parent 62131fe295
commit 3fb4049612
2 changed files with 5 additions and 3 deletions

@ -51,6 +51,10 @@ public:
{ {
} }
// Reference counted objects can be neither copied nor moved.
IReferenceCounted(const IReferenceCounted &) = delete;
IReferenceCounted &operator=(const IReferenceCounted &) = delete;
//! Grabs the object. Increments the reference counter by one. //! Grabs the object. Increments the reference counter by one.
/** Someone who calls grab() to an object, should later also /** Someone who calls grab() to an object, should later also
call drop() to it. If an object never gets as much drop() as call drop() to it. If an object never gets as much drop() as

@ -273,9 +273,7 @@ public:
void grab() noexcept { ++m_refcount; } void grab() noexcept { ++m_refcount; }
void drop() noexcept { if (--m_refcount == 0) delete this; } void drop() noexcept { if (--m_refcount == 0) delete this; }
// Preserve own reference count. DISABLE_CLASS_COPY(IntrusiveReferenceCounted)
IntrusiveReferenceCounted(const IntrusiveReferenceCounted &) {}
IntrusiveReferenceCounted &operator=(const IntrusiveReferenceCounted &) { return *this; }
private: private:
u32 m_refcount = 1; u32 m_refcount = 1;
}; };