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

EmpTrans *EmpTrans::ReadNext()
{
 EmpTrans *empTrans;
 char transactionType;
 char a;

 (*stream) >> transactionType;
 if (stream->eof())
  throw NoMore();

 if (trnsactionType == 'A')
 {
  empTrans = new EmpTransAdd;
  empTrans->ReadBody();
  empTrans->number = -1;
 }
 else if (trnsactionType == 'C')
 {
  empTrans = new EmpTransChange;
  (*stream) >> empTrans->number;
  empTrans->ReadBody();
 }
 else if (trnsactionType == 'D')
 {
  empTrans = new EmpTransDelete;
  (*stream) >> empTrans->number;
 }
 else
  throw InvalidType();
 
 do { stream->get(a); }
  while ( (!stream->eof()) && (a != '\n') );
 return empTrans;
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הפונקציה זורקת exception מסוג NoMore כשהיא מגיעה לסוף הקובץ, פעולה הגורמת לפונקצית ה-main לצאת מלולאת העיבוד שלה.
אם הקובץ אינו ריק, היא מבצעת עיבוד על סמך סוג העדכון. לדוגמא, עבור עדכון ההוספה המסומן באות A, ניתן לראות שהפונקציה יוצרת אובייקט מסוג EmpTransAdd, קוראת לתוכו את רוב נתוני רשומת ההוספה ע"י הפונקציה ReadBody ומעדכנת את מספר העובד של האובייקט ל-1-, ערך מיוחד המציין שהעובד הוא חדש ואין לו עדיין מספר עובד.
הלולאה האחרונה קוראת את כל הרווחים בסוף השורה כהכנה לקריאת הרשומה הבאה.