c++ mapping and union

litala

New member
c++ mapping and union

היי.. אני לא יודעת אם זה המקום לשאול, אבל.. הייתי רוצה להשתמש בmap של c++ על מנת למפות בין string (מפתח) לבין struct כערך.. הבעיות שאני נתקלת בהן, הן- 1. עושה רושם שזה בלתי אפשרי לבצע מיפוי לאובייקט, או שלפחות לא לstruct 2. אני רוצה להחזיק את הstructs בתוך union (מתאים למימוש שלי) וגם פה יש בעיה, מסתבר שלא ניתן ליצור union לarguments עם גודל לא ידוע מראש.. אולי אני צריכה לשנות את הdesign של התוכנית, אבל שווה לבדוק אם מישהו מכיר דרך לעקוף את זה .. תודה מראש..
 

ihovav

New member
לא מובן...

אני לא בטוח שהבנתי את הכוונה בכל מקרה - מהניסיון שלי ב CPP - ניתן בהחלט לאחסן מידע בצורת CLASSES או STRUCTS ב MAP או ב MULTI MAP תתני יותר פרטים על התכנית ואם אפשר גם לצרף את הקוד או חלק ממנו שידגים הגדרה , הכנסה הוצאה והשמדת ה MAP אני חושב שכדאי שתבדקי את צורת ההגדרה של ה MAP כמו"כ - ישנה בעיה ב VISUAL STUDIO בשימוש ב MAPS ו MULTI MAPS - הוא נותן WARNINGS על כלום וצריך לבטל את הWARNING הרלוונטי בצורה מלאכותית שוב - המידע שנתת לא מספיק - תנסי לפרט יותר
 

litala

New member
אז ככה..

אני כותבת תוכנה לניהול אובייקטים שונים היורשים כולם מאב קדמון יחיד. מכיוון שברמת הממשק (IO MANAGING) אין אפשרות לצפות מראש לאיזה מהבנים תהיה פנייה, יש לעבוד בDESIGN כללי ככל הניתן (בגדול, הנקודה היא לחסוך בסרבול של הקוד עם switch ענק או אוסף של ifים ). חשבתי על פתרון של עבודה עם structs המותאמים לכל אובייקט-בן, ובכל פנייה לטיפוס מסויים ע"י המשתמש, "ישלף" הSTRUCT הרלוונטי (לדוגמה, באתחול המשתנים ביצירת אובייקט חדש..) המכיל את השדות המתאימים. פתרון דומה יכל להיות שימוש בbag of properties ז"א, struct שיכיל את השדות של כולם, אבל פתרון זה מסורבל,ולא מודולרי (בלשון המעטה..). ע"י שימוש בunion לכל אחד מהstructs ופנייה לstruct המתאים בעזרת מיפוי מהצורה (map<string,struct>i או משהו כזה) נכון יותר לוגית.. (שדה יחיד בכל רגע נתון) אם זה בלתי אפשרי, תמיד קיים הפתרון בשימוש בפויינטרים לפונקציות, אבל זה סרבול בפני עצמו.. (תודה, וסליחה על חוסר הבהירות , אני בתחילת דרכי עם השפה הזו ומתגעגעת לJAVA.. :> )
 

litala

New member
תיקון..

טעות שלי. התכוונתי לunion יחיד, של כל הstructs הרלוונטים. אני עדיין לא בטוחה לגבי ה syntax, אבל זה בגדול מה שאני רוצה שזה יעשה(לדוגמא, אתחול): typedef map<string,struct > entitystruct; entitystruct es s["Student"]=StudentProperty; \\השמת struct ב"מקום" ה string האם יש לזה סיכוי לעבוד??????????????????????????
 

ihovav

New member
אם אני מבין נכון...

את מתכוונת לבצע אובייקט שממנו ירשו כמות בילתי מוגבלת של אובייקטים וכמות בלתי מוגבלת של ירושות אני מציע לך ליצור אב שיהיה "PURE VIRTUAL" - המקביל ל "INTERFACE" ב JAVA - וככה תוכלי לעשות DESGIN, לחשוב אילו פעולות עשויות להיות רלוונטיות לאובייקט ה IO ולממש בכל אחד מהבנים לפי איך שמתאים לו אני מצרף קובץ מפרוייקט ישן שלי ובו הגדרה של MAP ופעולות נחוצות כמו ITERATOR, INSERT, REMOVE, CLEAR וכ"ו- תסתכלי עליו ותראי אם הוא עוזר בנוסף - יש שם ביטול ה WARNING שהזכרתי בהודעה הקודמת - במידה ואת משתמשת ב VISUAL STUDIO - את צריכה להוסיף את הביטול הזה כדי להשתמש ב MAP או MULTIMAP אני ממליץ "לעטוף" את הMAP בCLASS שלך כמו שאני עשיתי - ולספק את הפעולות הדרושות ניתן לעשות מזה TEMPLATE - לשימוש גנרי יותר בכל מקרה - אני מעדיך שתשלחי לי מייל מפורט עם כל השאלות בצורה מפורטת
 
למעלה