פורסם 2007 בינואר 1218 שנים כשאני מנסה להעמיס את האופרטור ">>" לפי הדוגמאות שמצאתי, אני מקבל שגיאת קומפילציה ולא ברור לי למה. error C2804: binary 'operator <<' has too many parametersהגדרת האופרטור ב-CLASSostream& operator<<(ostream &output, const Transport &PrintTransport);האופרטורostream& Transport:: operator<<(ostream &output, const Transport &PrintTransport){ output << PrintTransport.Name; return output;}יש למישהו רעיון?
פורסם 2007 בינואר 1218 שנים הפונק' הזו לא צריכה להיות מתודה של המחלקה (בין היתר היא לא אמורה לקבל את this, וככה אתה יורד לשני פרמטרים). על friend שמעת?
פורסם 2007 בינואר 1318 שנים מחבר על friend שמעתי.אבל לא ראיתי אף דוגמא של האופרטור הנ"ל שהיתה ממש חלק מתוכנית, ככה שאני לא סגור על איך זה צריך להיות.אז אם תוכל לפרט זה מאוד יעזור.
פורסם 2007 בינואר 1318 שנים אתה צריך להגדיר את האופרטור הזה כ-friend ואז הוא לא יהיה מתודה של המחלקה. כלומר, במקום שה-Prototype שלה יהיה כזה -ostream& Transport:: operator<<(ostream &output, const Transport &PrintTransport)הוא יהיה כזה -ostream& operator<<(ostream &output, const Transport &PrintTransport)בסופו של דבר זו צריכה להיות פונקציה גלובלית.
פורסם 2007 בינואר 1318 שנים מחבר אוקיי, בצורה הזאת זה עובד.אבל עדיין לא ברור לי למה האופרטור צריך גלובלי.ולמה בעצם האופרטור מקבל שני פרמטרים ולא אחד מסוג ostream.
פורסם 2007 בינואר 1318 שנים כשאתה כותב לדוגמאcout<<my_obj;אתה בעצם מפעיל אופרטור >> בין שני אובייקטים, הראשון הוא cout והשני הוא האובייקט שלך. בגלל זה האופרטור צריך לקבל איזשהו ostream כפרמטר ראשון (שמאלי) ואיזשהו אובייקט כפרמטר שני (ימני).
פורסם 2007 בינואר 1318 שנים הנה אתר שיעזור לך עם הרבה מהשאלות שלך: http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.8
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.