Back to Reference-counted pointers
pastel/sys/pointer/countedptr/
// Description: A base class for CountedPtr reference counted objects
// Documentation: countedptr.txt
#ifndef PASTELSYS_REFERENCECOUNTED_H
#define PASTELSYS_REFERENCECOUNTED_H
namespace Pastel
{
//! A base class for CountedPtr reference counted objects.
/*!
Any class wishing to use CountedPtr for reference counting
must derive from ReferenceCounted. This base class
simply includes a counter that the CountedPtr implementation
increases and decreases.
*/
class ReferenceCounted
{
private:
template <typename> friend class CountedPtr;
template <typename> friend class WeakPtr;
public:
ReferenceCounted();
virtual ~ReferenceCounted();
// Note that a reference counter counts
// the references to the _memory address_.
// Thus assignment, copy construction and
// swap must not influence the reference count.
// In a way we should then prohibit them,
// but in this special case it is easier
// to define these functions but not
// copy the reference counts. This
// way the derived classes can use default
// compiler implementations of copy constructors etc.
// "Prohibited"
ReferenceCounted(const ReferenceCounted&);
// "Prohibited"
ReferenceCounted& operator=(const ReferenceCounted&);
private:
mutable integer count_;
};
}
#include "pastel/sys/pointer/countedptr/referencecounted.hpp"
#endif