מחלקות ב ++C

ofir73

New member
מחלקות ב ++C

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

3am

New member
פוינטר ל app

הגדר את ה המופע ב app של ה פרויקט ( נגיד progName) בכל מקום בפרויקט תוכל ליכתוב : ;()progName *pApp = (progName *)AfxGetApp ואז תוכל להישתמש ב פוינטר ל app <-pApp כדי להגיע למופע
 

ofir73

New member
סליחה על הבורות

מה זה בדיוק APP ומה זה AFXGETAPP והאם צריך לכלול משהו כדי להשתמש בזה?
 

antidot

New member
אני חושב שהמשורר התכוון

למשהו יותר פשוט: שימוש במחלקה מתוך קבצים אחרים. אם כך הדבר אז כל מה שצריך לעשות זה בקובץ שבו רוצים ליצור אובייקט של המחלקה לעשות INCLUDE לקובץ H שבו מוגדרת המחלקה. אם המחלקה טמפלייטית תצטרך לעשות גם FORWARD DECLARATION אבל אני בספק שזה המקרה... אולי אני לא במקום אבל השאלה לא הייתה בדיוק מוגדרת. ואני מאוד בספק שהבן אדם רצה לקבל פויינטר לאפליקציה עצמה...
 

3am

New member
Singleton

כדי להבטיח שיהיה רק מופע אחד ל מחלקה יש להישתמש ב Singleton חפש את זה ברשת השיטה הראשונה היא רק ל mfc ולא לא צריך להוסיף כלום אבל Singleton זו הדרך האמיתית וממש כדי ללמוד
 

עידית_

New member
נדמה לי שלא הבנתם אותו. לדעתי אתה

מתכוון למשהו כמו extern. אני לא זוכרת בדיוק איך זה הולך, אבל נדמה לי שאתה צריך בקובץ השני להגדיר שוב את המופע, אבל עם המילה extern לפני. וזה אומר לקומפיילר שזה משתנה שהוגדר בקובץ אחר בשם זה. נגיד בקובץ המקורי יש לך הצהרה (כמובן גלובלית):
myClass obj;​
ובקובץ השני אתה עושה:
extern myClass obj;​
אבל אני לא בדיוק סגורה על זה שזה ככה. בכל אופן יש משהו כזה.
 

ofir73

New member
צודקת

נכון, לזה התכוונתי. אבל כשאני משתמש ב EXTERN ומנסה לעשות DELETE למופע ממקום אחר, קובץ שונה מזה ששם הוא הוצהר, אז למרות כל הצהרות ה EXTERN הקומפילר לא מוכן לקבל זאת
 
למעלה