17-08-2008, 19:35
|
|
|
חבר מתאריך: 04.05.08
הודעות: 32
|
|
הקצאות דינמיות בשילוב עם הורשה (Polymorphism)
שלום, אני מתכנת כרגע בC++ ויש לי שאלה.
אם אני הקציתי משתנה מסוג בסיס. לדוגמה: base *b
ומצד שני אני כל פעם רוצה להקצות עוד אובייקטים חדשים אבל לשמור על המשתנה b שלי ככה שתמיד יהיה מצביע לbase; האם אני צריך כל פעם להמיר חזרה לbase* עם dynamic_cast או שהמשתנה נשאר מצביע לbase?
מדובר על מצב כזה:
base *b;
b=new Derived1();
(שמירה של b ברשימה מקושרת)
b=new Derived2();
(שמירה של b ברשימה מקושרת)
האם תהיה כאן בעיה? האם אחרי הNEW הראשון המשתנה b "יתקלקל" ואצטרך לבצע המרה חזרה לטיפוס מצביע לbase או שאפשר להשאיר כך?
האם אפשר גם בלי משתנה פשוט להכניס לרשימה המקושרת את ההמרה של new derived כלשהו למצביע לbase?
|