Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

תמיכת לינוקס כללית - שאלה ב-C++ - משתנים כשמות משתנים אחרים

Anonymous - 02/07/2018 - 22:12
נושא ההודעה: שאלה ב-C++ - משתנים כשמות משתנים אחרים
z
קוד:
 for (int i=0; i<5;i++)

        variable'i'++;


כיצד ניתן ליישם את הקוד שלעיל באופן תקין?
הרעיון שפלט של משתנה אחד אמור להיות חלק משם של משתנה אחר. (זכורני שבבאש היה יישום לזה, אבל אני מחפש כעת יישום ל-C++)
Anonymous - 02/07/2018 - 22:20
נושא ההודעה:
מערך?
Anonymous - 02/07/2018 - 22:26
נושא ההודעה: Re: שאלה ב-C++ - משתנים כשמות משתנים אחרים
Anonymous :
z
קוד:
 for (int i=0; i<5;i++)

        variable'i'++;


כיצד ניתן ליישם את הקוד שלעיל באופן תקין?
הרעיון שפלט של משתנה אחד אמור להיות חלק משם של משתנה אחר. (זכורני שבבאש היה יישום לזה, אבל אני מחפש כעת יישום ל-C++)


זה חוסר הבנה בסיסי בשפה :

קוד:
void doSomething (int & var);
for (int i = 0 ; i < 5 ; i++) { doSomething(i); }

Anonymous - 02/07/2018 - 22:41
נושא ההודעה:
Anonymous :
מערך?

וקטור
Anonymous - 02/07/2018 - 22:52
נושא ההודעה:
Anonymous :
Anonymous :
מערך?

וקטור

דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++
זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית.
Anonymous - 02/07/2018 - 23:07
נושא ההודעה:
Anonymous :
Anonymous :
Anonymous :
מערך?

וקטור

דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++
זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית.

הוקטור נוח בהרבה מהמערך לדעתי.
Anonymous - 03/07/2018 - 08:13
נושא ההודעה:
Anonymous :
Anonymous :
Anonymous :
מערך?

וקטור

דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++
זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית.


אין פה קשר לשימוש יתר או שימוש לא נכון בסינטקסט, מדובר על משתמש שלא יודע להשתמש בשפה ומנסה להשליך את מה שהוא יודע מ bash על C++
Anonymous - 03/07/2018 - 10:09
נושא ההודעה:
Anonymous :
Anonymous :
Anonymous :
Anonymous :
מערך?

וקטור

דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++
זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית.


אין פה קשר לשימוש יתר או שימוש לא נכון בסינטקסט, מדובר על משתמש שלא יודע להשתמש בשפה ומנסה להשליך את מה שהוא יודע מ bash על C++


אתה לא עוקב. עברנו מלדבר על השאלה המקורית לסוגיה של הסינטקס המזעזע של C++.
(אגב - סינטקס, לא סינטקסט)
Anonymous - 03/07/2018 - 10:59
נושא ההודעה:
Anonymous :
Anonymous :
Anonymous :
Anonymous :
Anonymous :
מערך?

וקטור

דוגמה מצוינת לאחת הסיבות שיש לשנוא את C++
זה כאילו הם ניסו ממש בכוח לעשות Abuse of Notation בכל דרך אפשרית.


אין פה קשר לשימוש יתר או שימוש לא נכון בסינטקסט, מדובר על משתמש שלא יודע להשתמש בשפה ומנסה להשליך את מה שהוא יודע מ bash על C++


אתה לא עוקב. עברנו מלדבר על השאלה המקורית לסוגיה של הסינטקס המזעזע של C++.
(אגב - סינטקס, לא סינטקסט)


אתה יכול בבקשה להציג מדוע std::array או std::vector הם בעלי סינטקסט מזעזע ?
borsood - 05/07/2018 - 07:50
נושא ההודעה: Re: שאלה ב-C++ - משתנים כשמות משתנים אחרים
Anonymous :
z
קוד:
 for (int i=0; i<5;i++)

        variable'i'++;


כיצד ניתן ליישם את הקוד שלעיל באופן תקין?
הרעיון שפלט של משתנה אחד אמור להיות חלק משם של משתנה אחר. (זכורני שבבאש היה יישום לזה, אבל אני מחפש כעת יישום ל-C++)

אי אפשר.
ב־++C כמו בכל שפה מהודרת, השמות של המשתנים לא קיימים בזמן הריצה. מעבר לזה המהדר רשאי לסדר את הקוד מחדש כך שהמשתנים אפילו לא יהיו קיימים בכלל בזמן הריצה.
Anonymous - 05/07/2018 - 09:37
נושא ההודעה: Re: שאלה ב-C++ - משתנים כשמות משתנים אחרים
borsood :
Anonymous :
z
קוד:
 for (int i=0; i<5;i++)

        variable'i'++;


כיצד ניתן ליישם את הקוד שלעיל באופן תקין?
הרעיון שפלט של משתנה אחד אמור להיות חלק משם של משתנה אחר. (זכורני שבבאש היה יישום לזה, אבל אני מחפש כעת יישום ל-C++)

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


אפשר לבנות שפה וקומפיילר שימשיכו להחזיק את המשתנים בזמן ריצה, בצורה של טבלת סמלים שניתן לגשת אליה. זה רעיון רע שיפגע בכל היתרונות של שפה מהודרת, אבל זה אפשרי....
מי שכן רוצה להצמיד מידע לסמלים המיוצגים כמחרוזת, מוזמן להשתמש במבנה נתונים מתאים שממפה מחרוזות למידע, לא צריך לקלקל את המשתנים בשביל זה...
אגב, גם בשפות גבוהות שבהן גישה כזו למשתנים כן אפשרית, זה לרוב רעיון גרוע וגם הזמנה לפרצות אבטחה
Anonymous - 07/07/2018 - 15:07
נושא ההודעה: יש טכניקה
לפעמים יש צורך בזה גם ב-C++, כשאתה צריך לגשת למשתנים שהוגדרו במקום אחר לא כמערך/ווקטור.

האפשרויות שלך במקרה הזה:
1. אתה מקלל את מי שכתב את הקוד המקורי, ויוצר מערך של מצביעים למשתנים המקוריים.
2. אתה כותב מחדש את הקוד המקורי כמו בנאדם ועושה טובה לאנושות כולה. אבל לא תמיד הבוס מרשה לך להקדיש זמן לעבודות תשתית.
Anonymous - 08/07/2018 - 09:14
נושא ההודעה: Re: יש טכניקה
Anonymous :
לפעמים יש צורך בזה גם ב-C++, כשאתה צריך לגשת למשתנים שהוגדרו במקום אחר לא כמערך/ווקטור.

האפשרויות שלך במקרה הזה:
1. אתה מקלל את מי שכתב את הקוד המקורי, ויוצר מערך של מצביעים למשתנים המקוריים.
2. אתה כותב מחדש את הקוד המקורי כמו בנאדם ועושה טובה לאנושות כולה. אבל לא תמיד הבוס מרשה לך להקדיש זמן לעבודות תשתית.


אתה לא אמור לגעת במשתנים שנכתבו במקומות אחרים, ב C++ עושים encapsulation ולא נותנים לכולם לגעת במשתנים הפרטיים שלנו
Anonymous - 08/07/2018 - 11:39
נושא ההודעה:
אתה גם לא אמור להשתמש בקרנל מונוליטי, אבל הוא כל כך שימושי.....
Anonymous - 08/07/2018 - 16:06
נושא ההודעה:
Anonymous :
אתה גם לא אמור להשתמש בקרנל מונוליטי, אבל הוא כל כך שימושי.....


זה כבר משהוא אחר, זה יהיה בערך כמו שתתחיל להשתמש לקוח מייל שהוא מגיע כקרנל מודול.
Anonymous - 08/07/2018 - 18:35
נושא ההודעה: Re: יש טכניקה
Anonymous :
Anonymous :
לפעמים יש צורך בזה גם ב-C++, כשאתה צריך לגשת למשתנים שהוגדרו במקום אחר לא כמערך/ווקטור.

האפשרויות שלך במקרה הזה:
1. אתה מקלל את מי שכתב את הקוד המקורי, ויוצר מערך של מצביעים למשתנים המקוריים.
2. אתה כותב מחדש את הקוד המקורי כמו בנאדם ועושה טובה לאנושות כולה. אבל לא תמיד הבוס מרשה לך להקדיש זמן לעבודות תשתית.


אתה לא אמור לגעת במשתנים שנכתבו במקומות אחרים, ב C++ עושים encapsulation ולא נותנים לכולם לגעת במשתנים הפרטיים שלנו


הוא לא שאל על נגיעה במשתנים פרטיים. אלו משתנים שכבר יש לך גישה אליהם, אפילו אם נכתבו במקום אחר - זה יכול להיות פשוט פיסת מורשת בקוד של החברה שאתה לא רוצה לגעת בה, לא בהכרח ספריה מהונדסת היטב.
Anonymous - 09/07/2018 - 01:28
נושא ההודעה:
אם אתה מחפש משהו כמו about:config של הדפדפן, אז אתה יכול לעשות משהו דומה ל:


קוד:


// 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
}


כל הזמנים הם GMT + 2 שעות