נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: החזרת string מפונקציה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
nd
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 19 January 2007 בשעה 13:52 | IP רשוּם
ציטוט nd

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

המצב הוא כזה:

בתוכנית יש לי class student ורשימה מקושרת של class'ים מסוג זה.

עליי לשמור את הנתונים מהרשימה המקושרת לקובץ.

אני צריך לגשת דרך איבר ברשימה המקושרת לסטודנט ומשם להוציא נתונים כמו id,avergae וכו'.

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

משום מה היא לא מחזירה כלום.

void save(element *st_h,element *sb_h){
 element *stu = st_h;
 element *sub = sb_h;
 int t_stu_id,t_stu_class;
 float t_stu_avg;
 char *t_stu_name;
 ofstream out("school_students");
  if(!out){
   cout<<"cannot open file"<<endl;
   exit(1);
  }
  while(stu!=NULL){
   t_stu_id = stu->get_id();
   t_stu_class = stu->get_stu_class();
   t_stu_avg = stu->get_avg();
   t_stu_name == stu->get_stu_name();
   cout<<t_stu_name;
   out<<" "<<t_stu_id<<" "<<t_stu_class<<" "<<t_stu_avg<<" "<<t_stu_name<<endl;
   stu = stu->getNext();
  }
 out.close();
}

השורה המודגשת בפונקציה הנ"ל היא שורת הקריאה לפונקציית הביניים שנמצאת באיבר של הרשימה המקושרת.היא מחזירה ערך לתוך char * בשם t_stu_name

 

char* get_stu_name(){
  char *T;
  T = st.get_name();
  return T;
  };

הפומקציה הנ"ל היא פונקציית הביניים הנמצאת באיבר של הרשימה המקושרת.

T מקבל מהפונקציה get_name שנמצאת בתוך class student את שם הסטודנט,ובפונקציה הזו T מקבל את הערך כמו שצריך.הבעיה היא שהוא לא מעביר אותו הלאה לפונקציית ה save שכתובה למעלה,כמו שצריך.

ולקינוח:

 

char* get_name(){return stu_name;};

זוהי הפונקציה בתוך class student,שמחזירה את הערך stu_name.

לסיום רק כדי לעשות סדר:

הפונקציה בתוך class student שולחת ערך לפונקציה בתוך class element (איבר של רשימה מקושרת) שמעביר את הערך הלאה לפונקציית הכתיבה לקובץ.

בין הפונקציה ב-class element לפונקציית השמירה ה-string הולך לי לאיבוד

מתנצל מראש על אורך הנושא...

 

חזרה לתחילת העמוד הצג את כרטיס החבר של nd חפש הודעות אחרות של nd בקר בדף הבית של nd
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 19 January 2007 בשעה 14:13 | IP רשוּם
ציטוט shoshan

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


בשורה המודגשת, למה == ולא = ?

__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
nd
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 19 January 2007 בשעה 23:50 | IP רשוּם
ציטוט nd

צודק,אני חושב ששפה זה בערך הדבר היחיד שפספסתי.

בכל מקרה ,מדובר ב c++

וה- == בגלל שבלעדיו אני מקבל הודעת lvalue required מהקומפיילר(borland)

חזרה לתחילת העמוד הצג את כרטיס החבר של nd חפש הודעות אחרות של nd בקר בדף הבית של nd
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 20 January 2007 בשעה 11:55 | IP רשוּם
ציטוט Fate

נראה לי ממש מוזר, זה בכל מקרה לא צריך להיות ==
כי == זה בדיקה אם זה שווה ולא הצבה אחד לשני...
מה שאתה צריך לבדוק זה למה הוא חושב שאי אפשר להציב למשתנה t_stu_name.
כי הקומפילר חושב שהוא לא יכול להיות lvalue (לא יכול להיות משמאל ז"א מוצב עליו)....
חזרה לתחילת העמוד הצג את כרטיס החבר של Fate חפש הודעות אחרות של Fate
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה