Syntax
class Ptr
{
public:
Ptr(void)
: mPointer(nullptr)
{
}
explicit Ptr(Type *aPointer)
: mPointer(aPointer)
{
}
bool IsNull(void) const { return (mPointer == nullptr); }
Type *Get(void) { return mPointer; }
const Type *Get(void) const { return mPointer; }
Type *operator->(void) { return mPointer; }
const Type *operator->(void) const { return mPointer; }
Type &operator*(void) { return *mPointer; }
const Type &operator*(void) const { return *mPointer; }
bool operator==(const Type *aPointer) const { return (mPointer == aPointer); }
bool operator!=(const Type *aPointer) const { return (mPointer != aPointer); }
bool operator==(const Ptr &aOther) const { return (mPointer == aOther.mPointer); }
bool operator!=(const Ptr &aOther) const { return (mPointer != aOther.mPointer); }
protected:
Type *mPointer;
};