ירושה של מחלקה פרטית בC++.

selalerer

New member
ירושה של מחלקה פרטית בC++.

האם ניתן לרשת מחלקה שמוגדרת כפרטית בתוך בתוך מחלקה אחרת (ע"י מחלקה חיצונית)? לדוגמא:
class A { private: class B { }; }; class C:B { };​
 

Motti19

New member
לכן, צריך להשתמש ב-

protected. וכך, המיתודה תהייה גם "פרטית" וגם ניתן יהיה להעביר אותה בתורשה.
 
מה זה יעזור?

כשאתה מגדיר חבר של מחלקה כprotected זה הופך אותו גלוי אך ורק למחלקות יורשות של אותה המחלקה בה הוא מוגדר. ולכן C תוכל לרשת מB אם ורק אם היא מוגדרת מקוננת בתוך מחלקה D שיורשת מA או ידידה (friend) של A.
 

אלדד28

New member
לא ברור לי מה יכול לגרום לך

לרשת ממחלקה פנימית של מחלקה. אתה יכול לתת דוגמה טובה לזה? בדרך כלל מחלקה פנימית היא משהו שאמור לשרת אך ורק את המחלקה המקיפה אותה, ולא להוות יעד לירושה. אולי אתה צריך להגדיר את B מחוץ ל-A וזהו?
 

selalerer

New member
רשימה.

אני יוצר מחלקת רשימה בסיסית (עם פונקציונליות בסיסית) ומחלקת איבר ברשימה בסיסת ואז יורש ע"י מחלקה שמיישמת את הרשימה ומחלקה שמיישמת את האיבר ברשימה, היות וכל רשימה כזאת מכילה איברים עם סוג מידע שונה.
 

אלדד28

New member
אז אל תעשה את זה בתור מחלקה פנימית,

תעשה (נגיד):
class Item { ... } class List { list<Item *> lst; } ...... class MyItem : public Item ...​
או לחילופין, תעשה את הרשימה כך שתהיה TEMPLATE ושתקבל class של data item.
 

selalerer

New member
בתור TEMPLATE זה כמובן יהיה

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

Motti19

New member
את צודקת.

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