המשך פתרון משימה 8 - התבנית Array
והפונקציה Open במחלקה Employee
 
עבור רוב המהדרים הגדרות התבנית בתוכנית זו תקינות, אך אם תיתקל בבעיות, עליך לבדוק את דרישות המהדר עימו אתה עובד לגבי תכנות עם תבניות.
החשוב בהגדרת מחלקה זו הוא הגדרת האופרטור [], אשר ירחיב אוטומטית את גודל המערך בכל פעם שנצטרך.
כעת נחזור למחלקה Employee ונחליף את הגדרת המערך הישנה בחדשה:

class Employee {

 struct Location {
  int number;
  long location;
 };

protected:
 static ifstream *in;
 static ofstream *out;
 static int locationCount;
 static int highestNumber;
 static long highestLocation;
 static Array<Location> locationList;
 /* other members of class Employee... */
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

בדרך זו המחלקה תשתמש במחלקת המערך, כאשר כל אלמנט בה הוא מטיפוס Location.
בפונקציה Open אין שום שינוי מבחינת השימוש במערך, מלבד שכעת לא נצטרך לדאוג לגודל המערך.
יש דבר נוסף שנרצה להזכיר לגבי המשתנים הסטטיים.
כזכור, בעת הגדרת מחלקה, משתני המחלקה המופיעים בתוך הגדרת המחלקה אינם מוגדרים, אלא מוכרזים בלבד. דבר זה מספיק עבור משתני מחלקה לא סטטיים מכיוון שישמר עבורם מקום בעת הגדרת האובייקטים של המחלקה.
אבל עבור משתנים סטטיים יש צורך להגדיר אותם מחוץ להגדרת המחלקה כדי לשמור להם מקום בצורה הבאה:

ofstream *Employee::out=NULL;
ifstream *Employee::in=NULL;
int Employee::locationCount = 0;
int Employee::highestNumber = 0;
long Employee::highestLocation = 0;
Array <Employee::Location>
          Employee::locationList;
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

ניתן להגדיר אותן בכל קובץ, בתנאי שהם מוגדרים פעם אחת בלבד. אך המקום הטבעי לעשות זאת הוא במקום בו מגדירים את הפונקציות למחלקה Employee.