Gyoto
|
Pointers performing reference counting. More...
Public Member Functions | |
SmartPointer (T *orig=NULL) | |
Constructor from a standard pointer-to-class. | |
SmartPointer (const SmartPointer< T > &orig) | |
Copy constructor from same type. | |
template<class U > | |
SmartPointer (const SmartPointer< U > &orig) | |
Copy constructor from compatible type (used for casting) | |
T & | operator* () |
Dereference operator "*". | |
const T & | operator* () const |
Dereference operator "*". | |
T * | operator-> () |
Dereference operator "->". | |
T * | operator-> () const |
bool | operator== (const SmartPointer< T > &right) |
Comparison operator between two SmartPointer of same kind. | |
bool | operator!= (const SmartPointer< T > &right) |
Comparison operator between two SmartPointer of same kind. | |
SmartPointer< T > & | operator= (SmartPointer< T > &right) |
Copy a SmartPointer to another (already defined) SmartPointer of same kind. | |
SmartPointer< T > & | operator= (T *right) |
Copy a normal pointer to an (already defined) SmartPointer of same kind. | |
operator T * () | |
Cast SmartPointer to normal pointer. | |
operator const T * () | |
operator bool () | |
Check whether SmartPointer is valid. | |
bool | operator! () const |
Check whether SmartPointer is valid. | |
const T * | operator() () const |
Get standard, non-smart pointer to object. Use with care. |
Private Member Functions | |
void | decRef () |
Decrement the reference counter. Warning: don't mess with it. |
Private Attributes | |
T * | obj |
Real pointer, don't mess with it. |
Pointers performing reference counting.
Pointee must inherit from class SmartPointee.
To create an object and a SmartPointer pointing to it:
|
inline |
Constructor from a standard pointer-to-class.
obj | : a pointer to an instance of class T, created using new T(). |
Example:
|
inline |
Copy constructor from same type.
orig | : a SmartPointer to an instance of class T |
Example:
ObjPtr and ObjPtr2 point to the same instance of class T. Copying increments the reference counter.
|
inline |
Copy constructor from compatible type (used for casting)
orig | : a SmartPointer to an instance of another class U |
Example: MetricPtr is a SmartPoiter<Metric>, but really points to an instance of the child class Gyoto::Kerr:
MetricPtr and KerrPtr point to the same instance of class Kerr. The methods specific to class Kerr are available only to KerrPtr.
|
inline |
Check whether SmartPointer is valid.
|
inline |
Check whether SmartPointer is valid.
|
inline |
Get standard, non-smart pointer to object. Use with care.
This public method is needed to cast from a SmartPointer flavor to another. It should almost certainly never be used in user code, except perhaps for debugging purposes.
|
inline |
Dereference operator "*".
|
inline |
Dereference operator "*".
|
inline |
Dereference operator "->".
Access to the pointed-to-object's members.