הקומפיילר וOOP
הקוד הבא מניב שגיאה לגבי ambiguity:
הקוד הבא מניב שגיאה לגבי ambiguity:
class A { private: int X; public: A(int XVal){X=XVal;} }; class B { public: int X; B(int XVal){X=XVal;} }; class C
ublic B,public A { public: C(int XVal):A(XVal),B(XVal){} void DoIt() { X=2;//This line causes the ambiguity error... } };
ברור למה הוא רושם את זה, אבל לא נראה לי הגיוני שהמצב הנ"ל יוגדר כambiguity, מכיוון שהX של מחלקה A הוא פרטי, ולפיכך הוא לא אמור להיות רלוונטי למחלקה C, היות ובכל מקרה אין לה גישה אליו. הרי כל הרעיון הוא הפשטה, לא? אז מה זה עוזר אם בסך הכל אני עוד פעם צריך להסתכל ברכיבים הפנימיים של המחלקה? המצב הזה גם ייצור בעיות שבהן אני ארש ממחלקה שמישהו אחר יצר ולפתע יהיה רשום לי AMBIGUITY ... ממש לא ברור לי למה זה כן טוב... למה לא בחרו כן לסמן כשגיאה כזה מקרה?