פורסם 2006 ביוני 519 שנים זה מה שרשמתי:struct Man{char name[20];int num;};איך אני נגשת בתכנית הראשית לאחד מהדות ע"מ לשנות את ערכו??ניסתי ע"י מצביע מסוג Man ולעשות Man *m;m->numוכו' אבל זה לא עובד.וכםף איך אני קולטת מחרוזת (gets?)??
פורסם 2006 ביוני 519 שנים את יכולה להגדיר אובייקט כזה על ה- stack, ככה:Man m;או להגדיר אליו מצביע, ולאתחל אותו, ככה:Man* m = new Man();.לקלוט מחרוזת יש די הרבה דרכים, בין השאר scanf (ב- C) ודרך- cin (ב- C++)
פורסם 2006 ביוני 519 שנים אם את משתמשת במצביע, את חייבת להקצות אותו(או לגרום לו להצביע על מקום מסויים בזיכרון) לפני שאת משתמשת בו. סביר להניח שלא עשית זאת, ולכן נתקלת בבעיה.לחילופין, את יכולה לעשות :Man m;m.num = 10;כדי לקלוט מחרוזת בC++ את יכולה להשתמש ב- cin<<str; כאשר STR זה שם המחרוזת שלך.שיטה זו לא טובה, מאחר שיש בעיות אם הכנסת יותר ממה שהקצאת. במקום זה את יכולה להשתמש ב- cin.getline כדי לקלוט מחרוזת עם הגבלה מסויימת על תווים(את אפילו יכולה להגיד לו באיזה תו לסיים לקלוט - למשל, אם הכנסת 'A' אז הקלט יפסק ומה שנכנס אחריו לא יהייה במחרוזת).
פורסם 2006 ביוני 519 שנים Man* m = new Man();כמעט:Man* m = new Man;אם לא נותנים לקונסטרקטור ארגומנטים, אסור לשים סוגריים.כדי לקלוט מחרוזת בC++ את יכולה להשתמש ב- cin<<str; כאשר STR זה שם המחרוזת שלך.שיטה זו לא טובה, מאחר שיש בעיות אם הכנסת יותר ממה שהקצאת. במקום זה את יכולה להשתמש ב- cin.getline כדי לקלוט מחרוזת עם הגבלה מסויימת על תווים(את אפילו יכולה להגיד לו באיזה תו לסיים לקלוט - למשל, אם הכנסת 'A' אז הקלט יפסק ומה שנכנס אחריו לא יהייה במחרוזת).הדרך החכמה וה-C++-ית היא להשתמש ב-string של STL, אבל אני מניח שעדיין לא למדת את זה...
פורסם 2006 ביוני 619 שנים כמעט:Man* m = new Man;אם לא נותנים לקונסטרקטור ארגומנטים, אסור לשים סוגריים.בטח שמותר, ואף מקובל:vector<Customer>().swap( v );
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.