פורסם 2006 בדצמבר 1218 שנים הצהרתי על פונקציות חברות ע"מ להשתמש באופרטורים >> ו<< לקלוט מחרוזות: friend ostream& operator<<(ostream &os, String&); friend istream& operator>>(istream &is, String&);וממשתי:ostream & operator<<(ostream&os, String&s){ os<<s; return os;}istream & operator>>(istream&is, String&s){ is>>s; return is;}ואני מקבלת כל מיני הערות מוזרות לדוגמא:'ostream' : 'friend' not permitted on data declarations'ostream' : missing storage-class or type specifiers'ostream' : unable to resolve function overloadמה הבעיה?????
פורסם 2006 בדצמבר 1318 שנים os<<s;תנסי אולי לעשותos<<s.str;את מנסה להדפיס בידיוק את מה ששלחת. כנל עבור הISTREAM.וכדאי לתת CONST STRING&S
פורסם 2006 בדצמבר 1318 שנים הממיעזור אם תכתבי פה את כל הקוד שלך. משהו אומר לי שהצהרת על הפונקציה במקום לא טוב...
פורסם 2006 בדצמבר 1418 שנים נראה לי שהבעיה כאן:ostream & operator<<(ostream&os, String&s){ os<<s; return os;}וההצהרה צריכה להיות בתוך המחלקה של String.
פורסם 2006 בדצמבר 1418 שנים מחבר תודה. שכחתי לרשום ; using namespace std <האם יש בעיה לרשום פלט בקובץ ההצהרה??? לדוגמא פונקציה שמחפשת איבר ולא מוצאת תוציא פלט not found>
פורסם 2006 בדצמבר 1418 שנים יש כאן משהו שאני לא מבין...איפה הצהרת על FRIENDS? באיזו מחלקה?בקשר לשאלה שלך - בדרך כלל מפרידים בין ההצהרות למימוש(אלא אם זה פונ של שורות בודדות שלא אכפת לך לשים אותה כINLINE).בנוסף אם את רוצה לרשום שהאיבר לא קיים, כדאי לעשות את זה מחוץ למתודות. כלומר, הפונ שלך תחזיר את האיבר במקרה שהוא קיים ונמצא, אחרת, יחזיר NULL. מי שקרא למתודה יבדוק אם זה NULL, ואם כן, ידפיס שהאיבר לא קיים.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.