עבור לתוכן
  • צור חשבון
  • מי אנחנו?

    שלום אורח/ת!

     
    שים לב - על מנת להשתתף בקהילה שלנו, להגיב ולפתוח דיונים חדשים, עליך להצטרף כחבר רשום.

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

    לא אוהבים שמציקים לכם במייל? ניתן להירשם לאתר אך לוותר על הרישום לעידכוני המייל השבועיים.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

נעמה.

C++ friend function

Recommended Posts

הצהרתי על פונקציות חברות ע"מ להשתמש באופרטורים >> ו<< לקלוט מחרוזות:


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

מה הבעיה?????

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

os<<s;

תנסי אולי לעשות

os<<s.str;

את מנסה להדפיס בידיוק את מה ששלחת. כנל עבור הISTREAM.

וכדאי לתת CONST STRING&S

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

הממ

יעזור אם תכתבי פה את כל הקוד שלך. משהו אומר לי שהצהרת על הפונקציה במקום לא טוב...

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

נראה לי שהבעיה כאן:

ostream & operator<<(ostream&os, String&s)

{

os<<s;

return os;

}

וההצהרה צריכה להיות בתוך המחלקה של String.

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

תודה. שכחתי לרשום ; using namespace std

:hat:

<האם יש בעיה לרשום פלט בקובץ ההצהרה??? לדוגמא פונקציה שמחפשת איבר ולא מוצאת תוציא פלט not found>

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

יש כאן משהו שאני לא מבין...

איפה הצהרת על FRIENDS? באיזו מחלקה?

בקשר לשאלה שלך - בדרך כלל מפרידים בין ההצהרות למימוש(אלא אם זה פונ של שורות בודדות שלא אכפת לך לשים אותה כINLINE).

בנוסף אם את רוצה לרשום שהאיבר לא קיים, כדאי לעשות את זה מחוץ למתודות. כלומר, הפונ שלך תחזיר את האיבר במקרה שהוא קיים ונמצא, אחרת, יחזיר NULL. מי שקרא למתודה יבדוק אם זה NULL, ואם כן, ידפיס שהאיבר לא קיים.

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

זו הגדרה רקורסיבית, התוכנית תיכנס ללולאה אינסופית

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

×
  • צור חדש...
Back to top button
Close
Close