
06-06-2008, 17:57
|
|
|
|
חבר מתאריך: 12.08.06
הודעות: 17
|
|
|
שאלה ב C++ (ירושות,פולימורפיזם)
שלום, כתבתי קטע קוד מסוים אבל אני לא מצליח לעשות משהו, אני מניח שלא כל כך הבנתי את עיקרון הפולימורפיזים.
אני יתאר את הקוד שכתבתי, ואיפה מופיעה הבעיה
יש לי 3 מחלקות: Item,A,B
ב - Item יש לי כמה משתנים (תחת private) וכמה פונקציות מסוג void (תחת public
A,B יורשים מ Item:
class A: public Item
class B: public Item
לכל אחת מהמחלקות יש פונקציות ומשתנים משלהם.
ב - A,B יש לי קונסטרקטור, שמפעיל את הפונקציות שירשתי מ-Item וגם מפעיל פונקציות שנמצאות באותה המחלקה.
עד לכאן הכל עובד כמו שצריך.
עכשיו עשיתי מחלקה נוספת - Store, בתוך המחלקה הזאת אני רוצה מערך בגודל 10 של מצבעים ל - Item.
קוד:
#ifndef _STORE_
#define _STORE_
#include "Item.h"
class Store
{
Item* arr[10];
public:
Store(Item* x)
{
arr[0]=x;
}
};
#endif
ב- main עשיתי דבר כזה:
קוד:
#include <iostream.h>
#include "Item.h"
#include "A.h"
#include "B.h"
#include "Store.h"
void main()
{
Item* x=new A;
Store(x);
}
כאשר אני מגדיר את x שיצביע ל A אכן נוצר לי x חדש מסוג Item ופועל הקונסטרקטור של A.
2 בעיות:
1.אותם ערכים שהתקבלו כתוצאה מהפעלת הפונקציות של - A אינם נשמרים לי ב- x, x בעצם מקבל רק את הערכים שקימים ב- Item, אבל מה עם אותם ערכים שקימים ב-A?
איך אני ניגש אליהם? ואיפה הם בעצם נשמרו?
2. בעיה נוספת היא שאני גם לא מצליח לשלוח את אותו x למחקלה Store, שבה יש לי את מערך המצביעים מסוג *item, למה זה קורה?
מקווה שהסברתי את עצמי טוב, תודה מראש
נערך לאחרונה ע"י AvivHa בתאריך 06-06-2008 בשעה 18:15.
|