_INSTANTIATING CODE PATTERNS_ by Fred Wild Listing Three #ifndef pets_H #define pets_H // Forward references for each class class PetOwner ; class Veterinarian ; class Pet ; // Class PetOwner -------------------------------- class PetOwner { string m_Name ; Pet *m_Pet ; Veterinarian *m_Vet ; public: PetOwner(); PetOwner(const PetOwner& obj); PetOwner *makeCopy() const ; virtual ~PetOwner(); PetOwner &operator=(const PetOwner &rhs) ; const string & GetName () const ; void SetName (const string & val) ; const Pet * GetPet () const ; void SetPet (Pet *val) ; void ClearPet () ; const Veterinarian * GetVet () const ; void SetVet (Veterinarian *val) ; void ClearVet () ; } ; // Class Veterinarian -------------------------------- class Veterinarian { string m_Name ; string m_StreetAddress ; string m_Town ; string m_Phone ; public: Veterinarian(); Veterinarian(const Veterinarian& obj); Veterinarian *makeCopy() const ; virtual ~Veterinarian(); Veterinarian &operator=(const Veterinarian &rhs) ; const string & GetName () const ; void SetName (const string & val) ; const string & GetStreetAddress () const ; void SetStreetAddress (const string & val) ; const string & GetTown () const ; void SetTown (const string & val) ; const string & GetPhone () const ; void SetPhone (const string & val) ; } ; // Class Pet -------------------------------- class Pet { string m_Name ; string m_KindOfPet ; public: Pet(); Pet(const Pet& obj); Pet *makeCopy() const ; virtual ~Pet(); Pet &operator=(const Pet &rhs) ; const string & GetName () const ; void SetName (const string & val) ; const string & GetKindOfPet () const ; void SetKindOfPet (const string & val) ; } ; #endif