Public Types | Public Member Functions

ReferenceCountedObjectPtr< ReferenceCountedObjectClass > Class Template Reference

A smart-pointer class which points to a reference-counted object. More...

List of all members.

Public Types

typedef ReferenceCountedObjectClass ReferencedType
 The class being referenced by this pointer.

Public Member Functions

 ReferenceCountedObjectPtr () noexcept
 Creates a pointer to a null object.
 ReferenceCountedObjectPtr (ReferenceCountedObjectClass *const refCountedObject) noexcept
 Creates a pointer to an object.
 ReferenceCountedObjectPtr (const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &other) noexcept
 Copies another pointer.
ReferenceCountedObjectPtr
< ReferenceCountedObjectClass > & 
operator= (const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &other)
 Changes this pointer to point at a different object.
ReferenceCountedObjectPtr
< ReferenceCountedObjectClass > & 
operator= (ReferenceCountedObjectClass *const newObject)
 Changes this pointer to point at a different object.
 ~ReferenceCountedObjectPtr ()
 Destructor.
 operator ReferenceCountedObjectClass * () const noexcept
 Returns the object that this pointer references.
ReferenceCountedObjectClass * operator-> () const noexcept
ReferenceCountedObjectClass * getObject () const noexcept
 Returns the object that this pointer references.

Detailed Description

template<class ReferenceCountedObjectClass>
class ReferenceCountedObjectPtr< ReferenceCountedObjectClass >

A smart-pointer class which points to a reference-counted object.

The template parameter specifies the class of the object you want to point to - the easiest way to make a class reference-countable is to simply make it inherit from ReferenceCountedObject, but if you need to, you could roll your own reference-countable class by implementing a pair of mathods called incReferenceCount() and decReferenceCount().

When using this class, you'll probably want to create a typedef to abbreviate the full templated name - e.g.

 typedef ReferenceCountedObjectPtr<MyClass> MyClassPtr;
See also:
ReferenceCountedObject, ReferenceCountedObjectArray

Member Typedef Documentation

template<class ReferenceCountedObjectClass>
typedef ReferenceCountedObjectClass ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::ReferencedType

The class being referenced by this pointer.


Constructor & Destructor Documentation

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::ReferenceCountedObjectPtr (  )

Creates a pointer to a null object.

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::ReferenceCountedObjectPtr ( ReferenceCountedObjectClass *const   refCountedObject )

Creates a pointer to an object.

This will increment the object's reference-count if it is non-null.

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::ReferenceCountedObjectPtr ( const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &  other )

Copies another pointer.

This will increment the object's reference-count (if it is non-null).

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::~ReferenceCountedObjectPtr (  )

Destructor.

This will decrement the object's reference-count, and may delete it if it gets to zero.


Member Function Documentation

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::operator= ( const ReferenceCountedObjectPtr< ReferenceCountedObjectClass > &  other )

Changes this pointer to point at a different object.

The reference count of the old object is decremented, and it might be deleted if it hits zero. The new object's count is incremented.

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::operator= ( ReferenceCountedObjectClass *const   newObject )

Changes this pointer to point at a different object.

The reference count of the old object is decremented, and it might be deleted if it hits zero. The new object's count is incremented.

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::operator ReferenceCountedObjectClass * (  ) const

Returns the object that this pointer references.

The pointer returned may be zero, of course.

template<class ReferenceCountedObjectClass>
ReferenceCountedObjectClass* ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::operator-> (  ) const
template<class ReferenceCountedObjectClass>
ReferenceCountedObjectClass* ReferenceCountedObjectPtr< ReferenceCountedObjectClass >::getObject (  ) const

Returns the object that this pointer references.

The pointer returned may be zero, of course.


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines