class- מחלקות (++C) - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


אתי :)

Recommended Posts

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

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

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

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

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

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

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

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

3. מה?מזה ?!?

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

5. כן.

קישור לתוכן
שתף באתרים אחרים

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. את כל זה הייתם אמורים ללמוד (או שתלמדו בקרוב).

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...