# bdm::shared_ptr< T > Class Template Reference

A naive implementation of roughly a subset of the std::tr1:shared_ptr spec. More...

`#include <shared_ptr.h>`

List of all members.

## Public Member Functions
| shared_ptr ()
| Creates an empty shared_ptr - one that doesn't point anywhere.
| shared_ptr (T *p)
| shared_ptr (const shared_ptr< T > &other)
template<typename U >
| shared_ptr (const shared_ptr< U > &other)
shared_ptr< T > & | operator= (const shared_ptr< T > &other)
T * | get ()
T * | operator-> ()
T & | operator* ()
const T * | get () const
const T * | operator-> () const
const T & | operator* () const
bool | unique () const
long | use_count () const
| operator bool () const
void | swap (shared_ptr &other)
## Friends
class | shared_ptr

## Detailed Description

### template<typename T>
class bdm::shared_ptr< T >

A naive implementation of roughly a subset of the std::tr1:shared_ptr spec.

Really just roughly - it ignores memory exceptions, for example; also note I didn't read the spec.

The standard template would naturally be preferable, _if_ it was included in the standard libraries of all supported compilers - but as of 2009, that's still a problem...

## Constructor & Destructor Documentation

template<typename T>

bdm::shared_ptr< T >::shared_ptr | ( | T * | p | ) | `[inline]`

Constructs a shared_ptr that owns the pointer p (unless p is NULL, in which case this constructor creates an empty shared_ptr). When p isn't null, it must have been alllocated by new!

template<typename T>

bdm::shared_ptr< T >::shared_ptr | ( | const shared_ptr< T > & | other | ) | `[inline]`

If other is empty, constructs an empty shared_ptr; otherwise, constructs a shared_ptr that shares ownership with other.

template<typename T>
template<typename U >

bdm::shared_ptr< T >::shared_ptr | ( | const shared_ptr< U > & | other | ) | `[inline]`

If other is empty, constructs an empty shared_ptr; otherwise, constructs a shared_ptr that shares ownership with other.

## Member Function Documentation

template<typename T>

const T* bdm::shared_ptr< T >::get | ( |  | ) | const`[inline]`

Returns the stored pointer (which remains owned by this instance).

template<typename T>

T* bdm::shared_ptr< T >::get | ( |  | ) | `[inline]`

Returns the stored pointer (which remains owned by this instance).

Referenced by bdm::mepdf::from_setting(), and bdm::mepdf::mepdf().

template<typename T>

const T& bdm::shared_ptr< T >::operator* | ( |  | ) | const`[inline]`

Returns a reference to the object pointed to by the stored pointer. This method may only be called when the stored pointer isn't NULL.

template<typename T>

T& bdm::shared_ptr< T >::operator* | ( |  | ) | `[inline]`

Returns a reference to the object pointed to by the stored pointer. This method may only be called when the stored pointer isn't NULL.

template<typename T>

const T* bdm::shared_ptr< T >::operator-> | ( |  | ) | const`[inline]`

Returns the stored pointer (which remains owned by this instance). This method may only be called when the stored pointer isn't NULL.

template<typename T>

T* bdm::shared_ptr< T >::operator-> | ( |  | ) | `[inline]`

Returns the stored pointer (which remains owned by this instance). This method may only be called when the stored pointer isn't NULL.

The documentation for this class was generated from the following file:

- shared_ptr.h