Listing 2: Implementation of Company using referencecount template
#include <stdio.h>
#include <string.h>
#include <memory.h>
#include "refcount.h"
///////////////////////////////////////////////////////////////////
// Data structure for storing variables for class Company
struct SCompany
{
SCompany()
{
memset(m_szCompanyName, 0, sizeof(m_szCompanyName));
memset(m_szAddress, 0, sizeof(m_szAddress));
}
SCompany(const SCompany& struCompany)
{
strcpy(m_szCompanyName, struCompany.m_szCompanyName);
strcpy(m_szAddress, struCompany.m_szAddress);
}
char m_szCompanyName[81];
char m_szAddress[128];
};
class Company : public CHReferenceCount<SCompany>
{
public:
// Data accessing functions - using const GetData()
const char* GetCompanyName() const
{ return GetData()->m_szCompanyName; }
const char* GetAddress() const
{ return GetData()->m_szAddress; }
// Data manipulation functions - using non-const GetData()
void SetCompanyName(const char* szCompanyName)
{ strcpy(GetData()->m_szCompanyName, szCompanyName);}
void SetAddress(const char* szAddress)
{ strcpy(GetData()->m_szAddress, szAddress);}
};
int main()
{
Company objCompany;
objCompany.SetCompanyName("ABC Company");
objCompany.SetAddress("100 Main Street, Nowhereville USA");
printf("Company name: %s\n",objCompany.GetCompanyName());
printf("Address : %s\n",objCompany.GetAddress());
return 0;
}
//End of File