argv ב- c++ - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

argv ב- c++


עG

Recommended Posts

שלום,

כתבתי תוכנה שתפקידה לסדר אירועים ביומן(לא משנה הפרטים) יש שני סוגי תאריך שניתן להכניס ליומן האירועים המוגדרים בקלאסים שונים.

הבעיה שסוג התאריך נקבע כפרמטר לתוכנית ב-(argv).

כשאני צריכה לשבץ תאריך איך אני אדע באיזה קונסטרקטור להשתמש??

האי ככה אי אפשר לעשות::

if

(argv[1]==-regular

)

תודה רבה על העזרה....

קישור לתוכן
שתף באתרים אחרים

השאלה היא איך אפשר ליצור אובייקטים מקלאסים שונים כתלות ב- string מסוים?

אם לשני הקלאסים יש הורה משותף אפשר לעשות משהו כזה -

CParent *pObj = NULL
if (strcmp(argv[1], "type1")==0)
pObj=new Child1()
else if (strcmp(argv[1], "type2")==0)
pObj=new Child2()

קישור לתוכן
שתף באתרים אחרים

הדרך הטובה לפתור כזה מצב.

מבחינת DESIGN נכון אסור ליצור מצב שהאוביקטים השונים מודעים אחד לשני והרבה יותר טוב שגם ה MAIN לא יהיה מודע לסוגי האוביקטים השונים.

במצב כזה בדרך הכי טוב לעבוד ככה.

כל ה CLASSים ממשים ממשק כללי (וכמובן יורשים מאב כלשהו שאינו ממומש.

ישנו CLASS אחד (FACTORY) שתפקידו להחליט איזה CLASS הוא אמור לאתחל לפי מבנה נתונים שיושב אצלו ואיזה שהוא מפתח (למשל ה STRING שמתקבל ב של התוכנית - כמו אצלך)

על מנת לאפשר גמישות מירבית ולמנוע מצב שבו אם רוצים להוסיף או לעדכן CLASS מסויים צריך לשנות קבצים קיימים כל CLASS דואג (על ידי בלוק סטטי) לרשום את עצמו במבנה הנתונים של ה FACTORY.

וה MAIN פשוט מפיעל את ה FACTORY כשהו שולח את הארגומנט - וה FACTORY מחזיר לו את האוביקט המתאים (לפוינטר של CLASS האב)

בצורה כזו גם אם בעתיד יש צורך להוסיף CLASS חדש יש צורך רק לכתוב אותו ולקמפל - בלי לעדכן שום קובץ אחר.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...