Public Member Functions

ScopedPointer< ObjectType > Class Template Reference

This class holds a pointer which is automatically deleted when this object goes out of scope. More...

List of all members.

Public Member Functions

 ScopedPointer () noexcept
 Creates a ScopedPointer containing a null pointer.
 ScopedPointer (ObjectType *const objectToTakePossessionOf) noexcept
 Creates a ScopedPointer that owns the specified object.
 ScopedPointer (ScopedPointer &objectToTransferFrom) noexcept
 Creates a ScopedPointer that takes its pointer from another ScopedPointer.
 ~ScopedPointer ()
 Destructor.
ScopedPointeroperator= (ScopedPointer &objectToTransferFrom)
 Changes this ScopedPointer to point to a new object.
ScopedPointeroperator= (ObjectType *const newObjectToTakePossessionOf)
 Changes this ScopedPointer to point to a new object.
 operator ObjectType * () const noexcept
 Returns the object that this ScopedPointer refers to.
ObjectType & operator* () const noexcept
 Returns the object that this ScopedPointer refers to.
ObjectType * operator-> () const noexcept
 Lets you access methods and properties of the object that this ScopedPointer refers to.
ObjectType * release () noexcept
 Removes the current object from this ScopedPointer without deleting it.
void swapWith (ScopedPointer< ObjectType > &other) noexcept
 Swaps this object with that of another ScopedPointer.

Detailed Description

template<class ObjectType>
class ScopedPointer< ObjectType >

This class holds a pointer which is automatically deleted when this object goes out of scope.

Once a pointer has been passed to a ScopedPointer, it will make sure that the pointer gets deleted when the ScopedPointer is deleted. Using the ScopedPointer on the stack or as member variables is a good way to use RAII to avoid accidentally leaking dynamically created objects.

A ScopedPointer can be used in pretty much the same way that you'd use a normal pointer to an object. If you use the assignment operator to assign a different object to a ScopedPointer, the old one will be automatically deleted.

A const ScopedPointer is guaranteed not to lose ownership of its object or change the object to which it points during its lifetime. This means that making a copy of a const ScopedPointer is impossible, as that would involve the new copy taking ownership from the old one.

If you need to get a pointer out of a ScopedPointer without it being deleted, you can use the release() method.


Constructor & Destructor Documentation

template<class ObjectType>
ScopedPointer< ObjectType >::ScopedPointer (  )

Creates a ScopedPointer containing a null pointer.

template<class ObjectType>
ScopedPointer< ObjectType >::ScopedPointer ( ObjectType *const   objectToTakePossessionOf )

Creates a ScopedPointer that owns the specified object.

template<class ObjectType>
ScopedPointer< ObjectType >::ScopedPointer ( ScopedPointer< ObjectType > &  objectToTransferFrom )

Creates a ScopedPointer that takes its pointer from another ScopedPointer.

Because a pointer can only belong to one ScopedPointer, this transfers the pointer from the other object to this one, and the other object is reset to be a null pointer.

template<class ObjectType>
ScopedPointer< ObjectType >::~ScopedPointer (  )

Destructor.

This will delete the object that this ScopedPointer currently refers to.


Member Function Documentation

template<class ObjectType>
ScopedPointer& ScopedPointer< ObjectType >::operator= ( ScopedPointer< ObjectType > &  objectToTransferFrom )

Changes this ScopedPointer to point to a new object.

Because a pointer can only belong to one ScopedPointer, this transfers the pointer from the other object to this one, and the other object is reset to be a null pointer.

If this ScopedPointer already points to an object, that object will first be deleted.

template<class ObjectType>
ScopedPointer& ScopedPointer< ObjectType >::operator= ( ObjectType *const   newObjectToTakePossessionOf )

Changes this ScopedPointer to point to a new object.

If this ScopedPointer already points to an object, that object will first be deleted.

The pointer that you pass is may be null.

template<class ObjectType>
ScopedPointer< ObjectType >::operator ObjectType * (  ) const

Returns the object that this ScopedPointer refers to.

template<class ObjectType>
ObjectType& ScopedPointer< ObjectType >::operator* (  ) const

Returns the object that this ScopedPointer refers to.

template<class ObjectType>
ObjectType* ScopedPointer< ObjectType >::operator-> (  ) const

Lets you access methods and properties of the object that this ScopedPointer refers to.

template<class ObjectType>
ObjectType* ScopedPointer< ObjectType >::release (  )

Removes the current object from this ScopedPointer without deleting it.

This will return the current object, and set the ScopedPointer to a null pointer.

template<class ObjectType>
void ScopedPointer< ObjectType >::swapWith ( ScopedPointer< ObjectType > &  other )

Swaps this object with that of another ScopedPointer.

The two objects simply exchange their pointers.


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