בעיה בclasses ב ++C...

ilankt

New member
בעיה בclasses ב ++C...

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

אלדד28

New member
יש לי בעיה עם ההגדרות שלך.

מה זה "מחלקה מקבלת כפרמטר"??? בכל מקרה, תראה את הדוגמה הבאה, אולי זה יעזור לך:
class B; // Forward declaration so we can use B in A. class A { ... protected: B *ptr_b; // Can only use as a pointer because class is undefined } class B { ... protected: A a; // Can hold an instance coz A is already defined }​
למשל, זה יעיל אם B הוא PARENT של A (מבחינת הכלה, לא מבחינת ירושה), ואז ב-A מחזיקים מצביע אל האבא.
 

ilankt

New member
אני יתן דוגמא:

class A { public: void Init(B *ptr_b); }; class B { private: A *a; void Init() { a->Init(\\פה הבעיה); } };​
מקווה שהבנת את הבעיה.
 

אלדד28

New member
נדמה לי שהבנתי אותך,

למרות שנראה לי שאתה מתקמצן על המקום ב-DATABASE של תפוז... תעשה ככה:
void Init() { a->Init(this); }​
בתוך B, ואז זה ישלח ל-a את הכתובת של ה-B שבו קראו ל-Init.
 
למעלה