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

class EmpTrans {
 /* same definition of class EmpTrans... */
public:
 /* member functions... */
 static EmpTrans *ReadNext();
};

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

את הפונקציה ReadNext הגדרנו כפונקציה סטטית, אז ניתן לקרוא לה ללא כל קשר ליצירת אובייקט. היא תוכל לקבוע את סוג אובייקט העדכון וליצור אותו, ואז להחזיר מצביע לאובייקט זה לשימושה של פונקצית ה-main.