בעיה בירושה ב c++

  • פותח הנושא Umen
  • פורסם בתאריך

Umen

New member
בעיה בירושה ב c++

שלום יש לי שאלה בסיסית בירושה : נגיד יש לי את הקוד הבא:
class base{ protected: int n ; public: base(int nn){n=nn;} void show(){ cout << n ;} }; class second:public base{ public: second(int yy):base(yy){;} }; main(){ second zz(3); zz.show(); return 0; }​
למה האוביקט second לא יורש את המתודה show() של אוביקט base ? ורק אם אני מוסיף ל second את המתודה void show(){cout << n ;} הוא כן מראה לי את הערך של n השאלה היא למה אין ירושה של המתודה מ base? תודה
 

DarkSwell

New member
יש ירושה..

הבעיה היא שפונקציה show של base היא protected כלומר מי שיורש מ base יוכל להפעילה רק מבפנים היא לא מוגדרת כ public אם תגדירה תחת public ב base אז כן תוכל להפעילה מ main או מכל מקום אחר. במידה ואתה לא מעוניין לשנות ל public אז תיצור פונקציה ב second בשם x לדוגמא וב x תבצע קריאה ל show כך לאחר מכן ב main תוכל לקרוא ל x.
 

vinney

Well-known member
אצלי הקוד שלך עבד בלי בעיה...

תבדוק שוב מה עשית.
 
למעלה