המשך פתרון משימה 8 - התבנית Array
והפונקציה Open במחלקה Employee
 
בלולאת ה-for בפונקציה אנו עוברים על כל רשומה בקובץ העובדים, מעדכנים את משתנה ה-location בכל אלמנט במערך בהתאם למקום הנוכחי בקובץ, קוראים את רשומת העובד ושומרים את מספר העובד.
בנוסף, מעדכנים גם משתנים אחרים (locationCount, highestNumber, ו-highestLocation) אותם נצטרך כדי להוסיף עובד חדש לקובץ.
את כל המשתנים החדשים נוסיף כמשתני מחלקה סטטיים למחלקת 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 Location locationList[32];
 /* other members of class Employee... */
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

template <class T>
class Array {
protected:
 T *storage;
 int storageCount;
public:
 Array(int size);
 ~Array();
 T &operator[](int index);
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הגדרת מחלקת המערך תשב בקובץ header בשם Array.h והקובץ Array.cpp יכיל את הגדרות הפונקציות של המחלקה ויבצע include לקובץ Array.h.
זוהי אפשרות אחת למקם את הגדרות התבנית. במקרה זה נצטרך להוסיף לקבצים המשתמשים בתבנית Array פקודת include לקובץ Array.cpp. מדוע עושים זאת?
למראית העין נראה כאילו בכל פעם שנבצע include לקובץ מאחד מקבצי המקור, ייווצר עותק נוסף של פונקציות המערך. אך בעצם מה שקורה הוא שפעולה זו הכרחית עבור המהדר לצורך השימוש בתבנית. פעולה זו תגרום שהתוכנית תיצור עותק אחד של פונקציות המערך לכל טיפוס נתונים עבורו נגדיר את המערך.