בעיה שנתקלתי בה (++C)

אני רוצה לעשות רשימה מקושרת שמכילה סוגי אובייקטים שונים (כלומר בכל רשימה אחת נתונה יוכלו להופיע סוגים שונים החל מINT דרך STRING (צ'אר פוינטר) וכלה במבנה נתונים שהמשתמש מגדיר - הרשימה צריכה להיות מסוגלת להכיל למעשה כל טיפוס נתונים). למהירי התשובה : 1) VOID פוינטר דורש קאסטינג בצורה קבועה ואינו מתאים כדי לאכסן אובייקטים עם קונסטרקטורים ודיסטרקטורים. 2) טמפלטים במקרה זה יאפשרו ליצור המון סוגי רשימות (לכל סוג שמתבקש) אבל כל רשימה כזו יכולה להכיל רק את אותו טיפוס הנתונים (לא מה שרצינו) תודה רבה!

How about a VARIANT

פותר את הבעיה חלקית

זה אכן טוב לטיפוסי נתונים כגון INT CHAR וכדומה אבל זה לא עובד לגבי CLASSים שהמשתמש מוסיף.

בעיה שנתקלתי בה (++C)

אני רוצה לעשות רשימה מקושרת שמכילה סוגי אובייקטים שונים (כלומר בכל רשימה אחת נתונה יוכלו להופיע סוגים שונים החל מINT דרך STRING (צ'אר פוינטר) וכלה במבנה נתונים שהמשתמש מגדיר - הרשימה צריכה להיות מסוגלת להכיל למעשה כל טיפוס נתונים). למהירי התשובה : 1) VOID פוינטר דורש קאסטינג בצורה קבועה ואינו מתאים כדי לאכסן אובייקטים עם קונסטרקטורים ודיסטרקטורים. 2) טמפלטים במקרה זה יאפשרו ליצור המון סוגי רשימות (לכל סוג שמתבקש) אבל כל רשימה כזו יכולה להכיל רק את אותו טיפוס הנתונים (לא מה שרצינו) תודה רבה!

מה דעתך על...

צור base class שהרשימה המקושרת תתבסס על pointers/references שלו. כל class שתיצור בהמשך - יירש מה-base class (ככה פתרנו את הבעייה לגבי user-defined classes). לגבי ה-basic types(int,char...) - תיצור להם classי-מעטפת שגם הם יירשו מה-base-class . בצורה זו תוכל גם לנצל את המעטפת שיצרת ל-types הבסיסיים כדי ליישם אופציות מתקדמות (למשל - בדיקות חריגה מגבולות ה-char*) וכד'. מקווה שעזרתי... (נ.ב. - זהו מודל דומה ל-class Object ב-java במידה מסויימת , אם אתה מכיר...)

ככה אני פטרתי את זהאבל...

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

בעיה שנתקלתי בה (++C)

אני רוצה לעשות רשימה מקושרת שמכילה סוגי אובייקטים שונים (כלומר בכל רשימה אחת נתונה יוכלו להופיע סוגים שונים החל מINT דרך STRING (צ'אר פוינטר) וכלה במבנה נתונים שהמשתמש מגדיר - הרשימה צריכה להיות מסוגלת להכיל למעשה כל טיפוס נתונים). למהירי התשובה : 1) VOID פוינטר דורש קאסטינג בצורה קבועה ואינו מתאים כדי לאכסן אובייקטים עם קונסטרקטורים ודיסטרקטורים. 2) טמפלטים במקרה זה יאפשרו ליצור המון סוגי רשימות (לכל סוג שמתבקש) אבל כל רשימה כזו יכולה להכיל רק את אותו טיפוס הנתונים (לא מה שרצינו) תודה רבה!

למה שלא תשתמש ב union מוכל בתוך class?

עבור לעמוד
בחזרה לפורום
כרגע בפורום זה: אין משתמשים רשומים
עבור לפורום:
תיכנות
בחר
בחר