המשך פתרון משימה 4 - פונקצית ה-main
 
ובכן כדי לעשות זאת כראוי, נשנה את הקוד בצורה הבאה:

int main()
{
 EmpTrans *empTrans;
 try
 {
  Employee::Open();
  EmpTrans::Open();
 }
 catch(Employee::CantOpenFile)
  {return 1;}
 catch(EmpTrans::CantOpenFile)
  {return 1;}
 for ( ; ; )
 {
  try
  {
   empTrans = new EmpTrans;
   empTrans->ReadNext();
   empTrans->Apply();
   delete empTrans;
  }
  catch (EmpTrans::NoMore)
   {break;}
  catch(Employee::NoSuch)
   {break;}
 }
 Employee::Close();
 EmpTrans::Close();
 return 0;
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

A "Jay Jones" s 40000 1995/10/10
C 276 "Sam Smith" * 0 1901/1/1
D 87
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הרשומה הראשונה היא עדכון מסוג הוספה, היא מסומנת באות A ואחריה המידע על העובד המתווסף.
הרשומה השניה היא מסוג שינוי, היא מסומנת באות C. אחריה מספר העובד והשדות לשינוי, באותו הסדר כמו ברשומה מסוג A, אך במקום השדות שאינם לשינוי מופיע ממלא מקום, כמו הספרה 0 בשדה המשכורת.
הרשומה השלישית היא מסוג מחיקה, היא מתחילה באות D, ולאחריה מספר העובד הנמחק.