ABA


"שאלה בC++ לגבי קלאס בתוך קלאס- סלט עם הINCLUDEים"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15535 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15535
זולי 
חבר מתאריך 10.8.04
4426 הודעות, דרג אמינות חבר זה
   19:54   06.11.09   
אל הפורום  
  שאלה בC++ לגבי קלאס בתוך קלאס- סלט עם הINCLUDEים  
 
   נניח שיש לי קלאס A שבו יש בין השאר קלאס B.

אז אני עושה include לקלאס של B כדי שיכיר אותו ואז הכל טוב ויפה...

אבל מה עם גם הקלאס A קיים בתוך B?

אם אני עושה include בלי IFNDEF אז כמובן הוא מתריע על הצהרה כפולה.
אם אני עושה עם IFNDEF אז בשלב מסויים הוא לא ייכנס לINCLUDE של השני ופשוט לא יזהה!

מה עושים?..

תודה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מה זאת אומרת ''שבו יש בין השאר קלאס B''? ldan192  06.11.09 20:17 1
  ממתי עושים INCLUDE לCLASS ? Net_Boy  06.11.09 20:22 2
  אני אנסה להתנסח אחרת: זולי  06.11.09 20:49 3
     מישהו בבקשה?.. אם עדיין לא ברור אני אנסה להסביר שוב זולי  07.11.09 10:43 4
         אני חושב שהבנתי אבל בכל זאת אני חושב שקוד מקור יעזור Net_Boy  07.11.09 13:11 5
             מכתב זולי  08.11.09 17:31 6
                 כן בהחלט, זה בדיוק מה שהתכוונתי דרך אגב Net_Boy  08.11.09 21:24 7
                     מכתב זולי  08.11.09 21:27 8
                         שום בודק תרגילים VeNom  09.11.09 08:45 9
                             זו לא הבעיה ולא השאלה- זולי  09.11.09 11:22 10
                                 זה ממש לא טריק וזה מאד מקובל בקרב מתכנתי C++ מנוסים ( Net_Boy  09.11.09 21:16 11

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:17   06.11.09   
אל הפורום  
  1. מה זאת אומרת ''שבו יש בין השאר קלאס B''?  
בתגובה להודעה מספר 0
 
פויינטר? אינסטנס? רפרנס? ירושה כלשהי?


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   20:22   06.11.09   
אל הפורום  
  2. ממתי עושים INCLUDE לCLASS ?  
בתגובה להודעה מספר 0
 
   עושים INCLUDE לקבצים

ההודעה ממש לא מובנת לי , תנסה להתנסח מחדש
ברמת העקרון NESTED CLASS (מחלקה בתוך מחלקה) מוכרת רק ע"י המחלקה שמכילה אותה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
זולי 
חבר מתאריך 10.8.04
4426 הודעות, דרג אמינות חבר זה
   20:49   06.11.09   
אל הפורום  
  3. אני אנסה להתנסח אחרת:  
בתגובה להודעה מספר 0
 
   יש לי CLASS GROUP
אחד מהממברז שלה הוא מסוג מצביע לProduct.

כאשר קיים CLASS PRODUCT
שאחד מהממברז שלו הוא מסוג מצביע לGROUP.

אז אם הוא נכנס קודם לCLASS GROUP, הוא צועק שהוא לא מכיר את PRODUCT ולהפך.

מה עושים?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
זולי 
חבר מתאריך 10.8.04
4426 הודעות, דרג אמינות חבר זה
   10:43   07.11.09   
אל הפורום  
  4. מישהו בבקשה?.. אם עדיין לא ברור אני אנסה להסביר שוב  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   13:11   07.11.09   
אל הפורום  
  5. אני חושב שהבנתי אבל בכל זאת אני חושב שקוד מקור יעזור  
בתגובה להודעה מספר 4
 
   כדי לראות מה לא עשית טוב
באופן עקרוני שיש לך מצביע בתוך מחלקה
רצוי לא לעשות INCLUDE בקובץ H
אלא פשוט לרשום
class MyClass;

ואתה מייעל את הזמני קומפילציה מאד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
זולי 
חבר מתאריך 10.8.04
4426 הודעות, דרג אמינות חבר זה
   17:31   08.11.09   
אל הפורום  
  6. מכתב  
בתגובה להודעה מספר 5
 
   מצאתי חלק בויקיפדיה שמסביר איך פותרים בדיוק את הבעיה שלי,
האם זה "לא יפה" להשתמש בפתרון הזה? :
שים לב תחת Example of circular dependencies in C++
יש שם בדיוק דוגמה למצב שלי וטריק לפתרון.
האם מקובל להשתמש בזה?
http://en.wikipedia.org/wiki/Circular_dependency


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   21:24   08.11.09   
אל הפורום  
  7. כן בהחלט, זה בדיוק מה שהתכוונתי דרך אגב  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
זולי 
חבר מתאריך 10.8.04
4426 הודעות, דרג אמינות חבר זה
   21:27   08.11.09   
אל הפורום  
  8. מכתב  
בתגובה להודעה מספר 7
 
   כן בהחלט מקובל להשתמש בזה או כן בהחלט זה נחשב טריקי ו"לא יפה"?

אגב עכשיו אתה אומר שאני יכול לוותר גם על הINCLUDE? השארתי אותו וזה עובד אבל אתה אומר שכדאי להשמיט אותו?..

בכל אופן תודה רבה לך על עזרתך


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק, 2 נקודות
   08:45   09.11.09   
אל הפורום  
  9. שום בודק תרגילים  
בתגובה להודעה מספר 8
 
   לא מסתכל על אם שמת אינקלוד או הכרזת על קלאס במקום..תתעסק בעיקר ולא בתפל..
כל עוד הלוגיקה של התוכנית טובה וקריאה והתוכנית עובדת זה לא משנה אם הוספת קובץ h או לא..אני מניח שאתה לא מתכנת לטטריס או משהו שלא יעמוד בעוד קצת ניפוח קוד(בקטנה)..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
זולי 
חבר מתאריך 10.8.04
4426 הודעות, דרג אמינות חבר זה
   11:22   09.11.09   
אל הפורום  
  10. זו לא הבעיה ולא השאלה-  
בתגובה להודעה מספר 9
 
   אין עניין של ניפוח קוד או אינקלוד מול הצהרה מוקדמת.

זה עניין של האם מקובל להשתמש בפיתרון forward declaration כדי לפתור בעיה של הצהרה מעגלית (circular dependency), או שזה "טריק" שהוא לא לעניין, ואם הגעתי למצב של הצהרה מעגילת (קלאס A שמצביע לקלאס B שמצביע לקלאס A ) אז זו בעיה מלכתחילה בשפה זו.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   21:16   09.11.09   
אל הפורום  
  11. זה ממש לא טריק וזה מאד מקובל בקרב מתכנתי C++ מנוסים (  
בתגובה להודעה מספר 10
 
   ערכתי לאחרונה בתאריך 09.11.09 בשעה 21:20 בברכה, Net_Boy
 
עדיף להמנע ממצב ש A מכיר את B ו B מכיר את A
COUPLING ב OOP זה בד"כ לא טוב אבל יש מקרים שכן ויש מקרים שאי אפשר להמנע מזה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net