קוד: |
for (int i=0; i<5;i++)
variable'i'++; |
Anonymous : | ||
z
כיצד ניתן ליישם את הקוד שלעיל באופן תקין? הרעיון שפלט של משתנה אחד אמור להיות חלק משם של משתנה אחר. (זכורני שבבאש היה יישום לזה, אבל אני מחפש כעת יישום ל-C++) |
קוד: |
void doSomething (int & var);
for (int i = 0 ; i < 5 ; i++) { doSomething(i); } |
Anonymous : |
מערך? |
Anonymous : | ||
וקטור |
Anonymous : | ||||
דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++ זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית. |
Anonymous : | ||||
דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++ זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית. |
Anonymous : | ||||||
אין פה קשר לשימוש יתר או שימוש לא נכון בסינטקסט, מדובר על משתמש שלא יודע להשתמש בשפה ומנסה להשליך את מה שהוא יודע מ bash על C++ |
Anonymous : | ||||||||
אתה לא עוקב. עברנו מלדבר על השאלה המקורית לסוגיה של הסינטקס המזעזע של C++. (אגב - סינטקס, לא סינטקסט) |
Anonymous : | ||
z
כיצד ניתן ליישם את הקוד שלעיל באופן תקין? הרעיון שפלט של משתנה אחד אמור להיות חלק משם של משתנה אחר. (זכורני שבבאש היה יישום לזה, אבל אני מחפש כעת יישום ל-C++) |
borsood : | ||||
אי אפשר. ב־++C כמו בכל שפה מהודרת, השמות של המשתנים לא קיימים בזמן הריצה. מעבר לזה המהדר רשאי לסדר את הקוד מחדש כך שהמשתנים אפילו לא יהיו קיימים בכלל בזמן הריצה. |
Anonymous : |
לפעמים יש צורך בזה גם ב-C++, כשאתה צריך לגשת למשתנים שהוגדרו במקום אחר לא כמערך/ווקטור.
האפשרויות שלך במקרה הזה: 1. אתה מקלל את מי שכתב את הקוד המקורי, ויוצר מערך של מצביעים למשתנים המקוריים. 2. אתה כותב מחדש את הקוד המקורי כמו בנאדם ועושה טובה לאנושות כולה. אבל לא תמיד הבוס מרשה לך להקדיש זמן לעבודות תשתית. |
Anonymous : |
אתה גם לא אמור להשתמש בקרנל מונוליטי, אבל הוא כל כך שימושי..... |
Anonymous : | ||
אתה לא אמור לגעת במשתנים שנכתבו במקומות אחרים, ב C++ עושים encapsulation ולא נותנים לכולם לגעת במשתנים הפרטיים שלנו |
קוד: |
// vars we want named access two. int speed; int weigth; char *address; ////////////////////// struct var { const char *name, void *ptr; enum { INT, STRING, BOOL } type; }; var vars[] = { { "speed", &speed, INT }, { "weight", &weight, INT }, { "address", &address, STRING }, { NULL } } // // Use this to set a variable by name // void set_int_var(const har *name, int value) { int idx; idx = ...... ; // find 'name' in 'vars'. assert(vars[idx].type == INT); *vars[idx].ptr = value } |