Guys....this is a problem I'm facing with Pointers 2 Pointers...

Model: Suzy owns a kennel where she boards pets. The kennel building contains 20 stalls, and she usually has cats in half the stalls and dogs in the other half.

class Animal
{
protected:
char*name;
public:

Animal()
{
Name=NULL;
}
Animal(char* n)
{
Name=strdup(n);
}
~Animal()
{
delete Name;
}
void WhoAmI()
{
cout<<"Generic Animal";
}
};

class Cat: public animal
{
public:
Cat()
Cat(char* n):Animal()
{//empty}
void WhoAmI(){cout<<"Cat Named"<<name;}
};
Class Dogublic Animal
{
//similar Code 2 Cat Class
};

class Kennel
{
private:
unsigned int MaxCats;
unsigned int NumCats;
Cat ** Kitties;//Now here's the problem

unsigned int MaxDogs;
unsigned int MaxCats;
Dog ** Doggies;
public:
Kennel(unsigned int maxc,unsigned int maxd);
~Kennel();
unsigned int Accept(Dog *d);
unsigned int Accept(Cat* c);

Dog * ReleaseDog(unsigned int pen);
Cat * ReleaseCat(unsigned int pen);

void ListAnimals();
};

Kennel::Kennel(unsigned int maxc,unsigned int maxd)
{
MaxCats=maxc;
MaxDogs=maxd;

NumCats=0;
NumCats=0;

Kitties = new Cat*[MaxCats];
Doggies = new Dog*[MaxDogs];

for(int i= 0;i<MaxCats;++i)
Kitties[i]=NULL;

for(i=0;i<MaxDogs;++i)
Doggies[i]=NULL;
}

Author's Xplanation:..A Kennel object contains pointers to 2 arrays,one containing pointers to Dogs..and the other containing pointers to Cats.Data Members track the size of the array and how many spots in each array actually contain Animals.


Now..my limited knowledge of Pointers and Pointers2Pointers was turned upside down in finding an Xplanation to what is being done here with regards to the pointer2pointers which the author regards as a Pointer to an array of Pointers which Point to Dogs.....help needed..and if possible..any URLs on Pointers to Pointers..