//Farm //Demonstrates Using an aggregate class #include using namespace std; class Critter { public: // begin public section Critter(int hunger = 0); int GetHunger() const; void SetHunger(int hunger); private: // begin private section int m_Hunger; }; Critter::Critter(int hunger) // constructor definition { m_Hunger = hunger; cout << "A new critter has been born!" << endl; //debugging message used for testing purposes } //comment out later since the end user does //not need to see this int Critter::GetHunger() const //getter function { return m_Hunger; } void Critter::SetHunger(int hunger) //setter function { if (hunger < 0) { cout << "You can't set a critter's hunger to a negative number.\n\n"; //debugging message } else { m_Hunger = hunger; } } class Farm { public: // begin public section Farm(int numCritters = 4); Critter GetCritter(int crittToGet = 0) ; // void SetHunger(int hunger); private: // begin private section Critter critters[25]; }; Farm::Farm(int numCritters) // constructor definition { for (int i = 0; i < numCritters; i++) { //critters[i] = Critter(i + 1); critters[i].SetHunger(i + 1); cout << "A new critter has been added to the farm!" << endl; } cout << "A new Farm has been created!" << endl; } Critter Farm::GetCritter(int crittToGet) //getter function { return critters[crittToGet]; } int main() { Farm myFarm(10); cout << "Calling GetHunger(): " << myFarm.GetCritter(7).GetHunger() << "\n\n"; cout << "Calling GetHunger(): " << myFarm.GetCritter(12).GetHunger() << "\n\n"; system("PAUSE"); return 0; }