#include <Rep.h>
Public Member Functions | |
VarPtr () | |
VarPtr (_Rep *ptr_r) | |
_Rep * | operator-> () |
const _Rep * | operator-> () const |
_Rep & | operator* () |
const _Rep & | operator* () const |
Private Member Functions | |
_Rep * | ptr () const |
On construction and assignment it behaves like a pointer. I.e. a 'const VarPtr<_Tp>'
is a '_Tp *const'
.
But accessing _Tp (via operator-> or operator*) its constness is propagated to _Tp. I.e. 'VarPtr<_Tp>'
behaves like a '_Tp *'
while a 'const VarPtr<_Tp>'
behaves as a 'const _Tp *'
.
Used in some classes to hide implementation data from the interface:
class Foo { class _Implementation; VarPtr<_Implementation> _impl; ...All a VarPtr does, is preventing accidential access to nonconst implementation data from const interface methods. If such access is intended is has to be expressed by using a cost_cast.
See makeVarPtr for convenient construction.
const _Rep& VarPtr< _Rep >::operator* | ( | ) | const [inline] |
References VarPtr< _Rep >::ptr().
_Rep& VarPtr< _Rep >::operator* | ( | ) | [inline] |
References VarPtr< _Rep >::ptr().
const _Rep* VarPtr< _Rep >::operator-> | ( | ) | const [inline] |
References VarPtr< _Rep >::ptr().
_Rep* VarPtr< _Rep >::operator-> | ( | ) | [inline] |
References VarPtr< _Rep >::ptr().
_Rep* VarPtr< _Rep >::ptr | ( | ) | const [inline, private] |
References BasicRepPtr::repPtr().
Referenced by VarPtr< _Rep >::operator*(), and VarPtr< _Rep >::operator->().