עבור לתוכן

ירושה ופולימורפיזם: ++C

Featured Replies

פורסם

עדיף לשים את הקוד בתוך טג קוד, לא סתם להצמיד שמאלה.

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

הפתרון הוא פשוט - להגדיר את ה-Destructor כוירטואלי (מה שמומלץ לעשות תמיד במקרה של ירושה).

פורסם

Airplane *c = dynamic_cast<Airplane*>(airplaneNode->m_data)-> // Error: the operand of a runtime dynamic_cast must have a polymorphic class type

אתה לא קורא מה שכותבים לך, נכון?

בנוסף, גם מה ששניצל אמר.

בקיצור, תקרא קצת איך משתמשים בdynamic_cast ואת הסינטקס המדויק.

פורסם

דווקא התחביר פה בסדר גמור (ה-airplaneNode הוא מטיפוס Node, וה-m_data שלו הוא מטיפוס Airplane שיורש בעקיפין מ-Item).

פורסם

סליחה, טעות. :facepalm:

פורסם
  • מחבר

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

ב. ההתנצלות התקבלה.

ג. שניצל אתה תותח. :xyxthumbs:

פורסם

תנסה לשפר את החיפוש שלך בגוגל. הודעות השגיאה מלמדות המון. אתה כנראה לא הראשון שנתקל בבעיות כאלה :xyxthumbs:

ארכיון

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

דיונים חדשים