עבור לתוכן

class- מחלקות (++C)

Featured Replies

פורסם
  • מחבר

עשיתי... :s05:

אז סגרתי הכל ופתחתי את כל התוכנית עם כל הקבצים מחדש...

כל ההודעות האלה ירדו ועכשיו הוא אומר:

error C2761: '{ctor}' : member function redeclaration not allowed

פורסם

תעלי לכאן את כל הקבצים ואז נוכל למצוא את הבעיה

פורסם
  • מחבר

יש לי 10 קבצים וזה שורות על גבי שורות-זה מלא.לא משנה אני מקווה להצליח בנתים עזבתי את זה..

תודה בכל מקרה ;)

פורסם

האם הגדרת כל מחלקה בקובץ h משלה, ואת המימוש בקובץ cpp?

האם דאגת לעשות אינקלוד בכל קובץ שמתייחס למחלקה מסויימת לקובץ h שמגדיר את המחלקה הזו?

האם דאגת ל-include guards?

האם יש לך אינקלודים מעגליים? (דהיינו, שני קבצים שעושים אינקלוד זה לזה)

האם סיימת כל הגדרת מחלקה בנקודה-פסיק? (טעות קטנה אבל נפוצה)

פורסם
  • מחבר

1.האם הגדרת כל מחלקה בקובץ h משלה, ואת המימוש בקובץ cpp?

2.האם דאגת לעשות אינקלוד בכל קובץ שמתייחס למחלקה מסויימת לקובץ h שמגדיר את המחלקה הזו?

3.האם דאגת ל-include guards?

4.האם יש לך אינקלודים מעגליים? (דהיינו, שני קבצים שעושים אינקלוד זה לזה)

5.האם סיימת כל הגדרת מחלקה בנקודה-פסיק? (טעות קטנה אבל נפוצה)

1. כן כל מחלקה מוגדרת בנפרד

2. כן עשיתי אינקלוד בכל קובץ

3. מה?מזה ?!?

4. לא. יש לי קובץ לדייט קובץ לטיים (שכל אחד הוא בפני עצמו) וקובץ לאיבנט שרק בו יש שימוש בקלאסים אחרים-טיים ודייט באחרים אין שימוש בקלאסים אחרים.

5. כן.

פורסם

3. פשוט תקראי את הדף בויקיפדיה. יש שם הסבר לבעיה, והסבר איך פותרים אותה. אם יש לך pragma once# בתחילת קובץ ה-h אז זה גם בסדר.

פורסם
  • מחבר

3. פשוט תקראי את הדף בויקיפדיה. יש שם הסבר לבעיה, והסבר איך פותרים אותה. אם יש לך pragma once# בתחילת קובץ ה-h אז זה גם בסדר.

עדין לא הבנתי מה הכוונה.ניסיתי וזה לא עזר..

נראה לי הזוי שכל פעם שאני מריצה יש בעיה אחרת.עכשיו הוא כתב: error C2511: 'Event::Event(void)' : overloaded member function not found in 'Event'

פורסם

בדיוק כמו שהוא אומר - הוא לא מוצא את הפונקציה (Event::Event(void, דהיינו איפשהו בקוד שלך את משתמש בקונסטרקטור של Event שלא מקבל שום פרמטרים.

האם את מגדירה איפשהו בקוד שלך משתנה מסוג Event בלי להעביר לו פרמטרים לקונסטרקטור?

חוץ מזה, תמיד שימי לב שכאשר יש שגיאה, הקומפיילר אמור להפנות אותך למיקום בקוד שגורם לשגיאה הזו.

פורסם
  • מחבר

בדיוק כמו שהוא אומר - הוא לא מוצא את הפונקציה (Event::Event(void, דהיינו איפשהו בקוד שלך את משתמש בקונסטרקטור של Event שלא מקבל שום פרמטרים.

האם את מגדירה איפשהו בקוד שלך משתנה מסוג Event בלי להעביר לו פרמטרים לקונסטרקטור?

חוץ מזה, תמיד שימי לב שכאשר יש שגיאה, הקומפיילר אמור להפנות אותך למיקום בקוד שגורם לשגיאה הזו.

אני באמת משתמשת בו וממשתי אותו אז לא אמורה להיות בעיה בכלל אני לא מבינה מה הקטע הזה.זה תמיד נותן לי על זה שגיאה!!!

פעם רץ פעם לא-משהו הזוי.

ואני יודעת שאני יכולה לראות איפה הבעיה- רק שאני מגיעה למקום שהוא מצביע הכל תקין שמה אז אני לא מבינה מה הוא רוצה.

יש לי שאלה-אולי היא קצת טפשית אבל שיהיה.

יש לי קלאס בתוך קלאס- נגיד בשם date. שאני רושמת date e; למשל. האם יש צורך בהקצאה דינמית או שקלאסים הם כמו כל משתנה (אינט דאבל וכאלה..)?

(יש צורך בהקצאה דינמית במקום שבו אני מכריזה על משתמש זה? יש צורך בהקצאה דינמית בקונסטקטור? או שאין צורך בכלל בהקצאה?).

אני מקווה שהסברתי את עצמי נכון... :s05:

פורסם

ואני יודעת שאני יכולה לראות איפה הבעיה- רק שאני מגיעה למקום שהוא מצביע הכל תקין שמה אז אני לא מבינה מה הוא רוצה.

אז תעלי לכאן את הקוד הבעייתי.

יש לי קלאס בתוך קלאס- נגיד בשם date. שאני רושמת date e; למשל. האם יש צורך בהקצאה דינמית או שקלאסים הם כמו כל משתנה (אינט דאבל וכאלה..)?

(יש צורך בהקצאה דינמית במקום שבו אני מכריזה על משתמש זה? יש צורך בהקצאה דינמית בקונסטקטור? או שאין צורך בכלל בהקצאה?).

אני מקווה שהסברתי את עצמי נכון... :s05:

מאיזה מקור את לומדת ++C? כי זה היה אמור לכסות את החלק הזה (מחלקה בתוך מחלקה, קריאה לבנאי של מחלקה מתוך בנאי של מחלקה המכילה אותה וכו').

פורסם
  • מחבר

אמרתי מהמרצה שלי- אני סטודנטית- כמה שזה לא נראה לפי השאלות שלי חחחח...

אבל אין מה לעשות רק שאני חוקרת לבד אני מבינה את הדברים.

פורסם
  • מחבר

 class Ca{ 
private:
int numOfEv;
int counter;
Ev* head;
Ev* tail;
};

לדוגמה- עושה הודעת שגיאה. הוא לא מזהה לי את Ev שזה קלאס. ועשיתי לו אינקלוד לקובץ H של הקלאס של Ev.

נותן:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

הוא נותן את השגיאה הזו פעמים- פעם על השורה לפני אחרונה ופעם על האחרונה

פורסם

אין ברירה, את תצטרכי להעלות לכאן את הקבצים הרלוונטיים, כי מעט הקוד שאת כותבת כאן הוא תקין.

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

class ClassA {
private:
ClassB b;
};

אז ClassA מכיל ממש עותק של ClassB בתוכו (למעשה זה זהה ל-struct בתוך struct). בעת היצירה של אובייקט מטיפוס ClassA, נקרא הבנאי של ClassB. על מנת להשתמש בבנאי ספציפי של ClassB (במקום הבנאי הדיפולטי) את צריכה להעביר אותו ברשימת האתחול בבנאי של ClassA. את כל זה הייתם אמורים ללמוד (או שתלמדו בקרוב).

פורסם
  • מחבר

זאת לא הייתה הכוונה שלי אבל תודה בכל מקרה :xyxthumbs:

ארכיון

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

דיונים חדשים