rendered paste bodyclass AutoReference :
public DataReference
{
public:
AutoReference( void );
AutoReference( AutoReference &refToCopy );
AutoReference( OneTimeData *originalData );
virtual ~AutoReference( void );
AutoReference& operator= ( AutoReference& rhs );
unsigned int GetReferenceCount( void );
void CountInc();
private:
unsigned int count;
};
#include "AutoReference.h"
// YOUR IMPLEMENTATION FOR YOUR AutoReference CLASS
// GOES HERE.
AutoReference::AutoReference( void )
{
DataReference();
count = 0;
}
AutoReference::AutoReference( AutoReference &refToCopy )
{
SetData( refToCopy.GetData() );
count++;
//refToCopy.CountInc();
}
AutoReference::AutoReference( OneTimeData *originalData )
{
SetData( originalData );
count = 1;
}
AutoReference::~AutoReference( void )
{
if (count == 1)
{
DestroyData();
}
else
{
count--;
}
}
AutoReference&
AutoReference::operator= (AutoReference& rhs)
{
SetData ( rhs.GetData() );
//rhs.CountInc();
count++;
return *this;
}
unsigned int AutoReference::GetReferenceCount( void )
{
return count;
}
void AutoReference::CountInc( void )
{
count++;
}