עבור לתוכן

C++ WIN32 API אתחול משתנה גלובלי

Featured Replies

פורסם

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

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

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

מקווה שהבנתם..

תודה.

פורסם

תצהיר עליו עם extern.

extern int myGlobalInt;

מספיקה הצהרה בסגנון הזה בכל מקום שבו אתה רוצה להשתמש במשתנה הגלובלי (או פשוט ב-Header כלשהו).

פורסם

למעשה שים את זה ב-header כלשהו, במקום לחזור על ההצהרה בכל אחד מ-100 המקומות.

כמו כן תוודא שהקובץ שמכיל את המשתנה עצמו מכיל גם את ה-header עם include.

כל זה חוסך צרות אח"כ.

פורסם
  • מחבר

אין לי בעיה עם ההצהרה

הוא מוצהר כגלובלי והתוכנה מזהה אותו בכל הקבצים

אבל נגיד למשל שאני מגדיר מברשת hRedbrush שתהיה בצבע אדום אז אני לא רוצה להגדיר אותה כל פעם מחדש בכל קובץ שתהיה אדומה אבל אם אני לא עושה את זה בכל קובץ אז זה נשאר בצבע לבן פשוט.

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

hGreenbrush = CreateSolidBrush(RGB(3,250,21));

פורסם

אם המשתנה מאבד את הערך שלו

משמעות הדבר שזה אינו אותו משתנה...

אם חשוב לך שזה יהיה אותו משתנה ממש (על כל ההשלכות: זכרון וכו')

אתה חייב להגדיר אותו פעם אחת בלבד

ובכל קובץ לציין אותו עם extern וכך תגיד לקומפילר שלך שהמשתנה מוגדר במקום אחר.

חוץ מזה, משתנים גלובלים זה דבר מגעיל

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

פורסם
  • מחבר

הוא היה מוגדר עד עכשיו כ static ואני לא מבין מה כל כך מגעיל בגלובלי..

פורסם

משתנה גלובאלי בדרך כלל נובע מתכנון לקוי של המערכת.

אם אתה יש לך מחלקה BRUSH, כדאי שתכניס לה משתנה שהוא STATIC במקום המשתנה הגלובאלי.

פורסם
  • מחבר

סלח לי על הבורות אבל למה לעשות מחלקה למברשות..

יש לי בסה"כ 5 מברשות.. עד עכשיו הם היו static והכל היה בסדר חוץ מזה שאני כל פעם צריך להגדיר את הצבע מחדש..כמו השורת קוד שרשמתי למעלה..ורציתי לדעת אם יש שיטה איך לעשות את זה פשוט יותר ולהגדיר אותך פעם אחת וזהו.

פורסם

אם משתנה נשמר סטטית במחלקה, אתה צריך לאתחל אותו רק במקום אחד(בקובץ הCPP), ולא כל פעם מחדש.

תנסה לחשוב לבד מה יותר ברור:


Brush::Green

או


hGreenbrush

יותר נוח לשימוש + אתה לא צריך להתעסק עם משתנים גלובאליים.

פורסם
  • מחבר

צודק ! לא חשבתי על לעשות מחלקה בכלל .

תודה רבה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים