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

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

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

class modifstream:public ifstream {
public:
 class MaxLenExceeded{};
 class InvalidQuotedString{};
 class InvalidDate{};
public:
 modifstream(char *name):ifstream(name){};
 char *getQuotedStr(char *str, int maxlen,
                    char limit='\"');
 Date getDate();
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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