פורסם 2005 במאי 1520 שנים שלום לכולם.יש לי בעייה די מוזרה, כנראה עם פוינטרים. כאשר אני מפעיל את הפונקציה הנ"ל,void Change_Details(Person *prn){ prn->Private_Details();} עבור Student, הכל עובד כשורה. אך, כאשר אני מפעיל את אותה פונקציה עבור Teacher, אני מקבל במקוםName: MorUserName: morcsPassword: 1122את התוצאה הבאה:Name: SERSPROFILE=C:\Documents and Settings\All UsersUserName: Documents and Settings\All UsersPassword: ettings\All Usersלהערכתי, אני מדפיס כתובות במקום ערכים. הפונקציה אשר מדפיסה את הפרטים איננה פונקציה וירטואלית, אלא היא פונקציה של Person אשר שניהן יורשות אותה עם ירישת Person.הנה קטע קוד הנחוץ:void Teacher_Menu(Person ***pPersonArr){ int flag=Check_Passwords(*pPersonArr); if (flag!=-1) { char selection; do { Print_Teacher_Menu(); cin>>selection; switch (selection) { case '1': Change_Details(*(pPersonArr[flag])); break; case '2': Show_Students_List(*(pPersonArr[flag]), *pPersonArr); break; case '3': Change_Grades(*pPersonArr); break; case ESC: break; default: Error_Messages(1); } } while(selection!=ESC); } else Error_Messages(2);}התייחסו בעיקר לפונקציה Change_Details ולמה שהיא מקבלת - האם האובייקט ששלחתי נכון?אותה שורה מופיעה בדיוק בתפריט ה Student, ואצלו כאמור, הכל עובד כשורה.אם דרושים לכם עוד קטעי קוד, אשמח להעלותם.בתודה מראש על כל עזרה שהיא, קובי.
פורסם 2005 במאי 1520 שנים הממאתה בטוח שכשאתה ניגש למקום flag במערך pPersonArr, אתה לא גולש מעבר לגבולות המערך?
פורסם 2005 במאי 1520 שנים כמה שאלות (כי אני לא בטוח שהבנת מה אתה מנסה לעשות).בתור מה אתה משתמש ב- pPersonArr - בתור מצביע למערך של מצביעים? או בתור מערך למערכים של מצביעים?המשתנה flag אמור להיות אינדקס למערך?הפונקציה Change_Details מצפה לקבל מערך או מצביע?זה אמור להיות חלק מתוכנית אמיתית או שזה איזה תרגיל שבו אתה אמור לראות כוכבים?
פורסם 2005 במאי 1620 שנים אני הוא פותח הנושא, פשוט הייתי אצל חבר.ולתגובות:שניצל: אין גלישת זיכרון.בומרנג:- pPersonArr הינו מצביע למערך של מצביעים. מכיוון שאני רוצה לשנות את המערך בפונקציה, שלחתי פוינטר ל pPersonArr.- flag הינו אינדקס למערך.- Change_Details מצפה לקבל מצביע.בתודה מראש על התייחסותכם וכל כל עזרה שתבוא, קובי.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.