עבור לתוכן

עזרה בבקשה... האם אפשר להגדיר קלאס כזה?

Featured Replies

פורסם

שלום,

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

יש לי קלאס בשם סטודנט.

ועשיתי את הקלאס בשם סטודנטד הבא:

#ifndef PART2_STUDENTS_H

#define PART2_STUDENTS_H

#include <vector>

#include "part2_student.h"

class Students{

public:

Students(vector <Student> vec);

~Students();

unsigned int calculate_avg_grade();

void print_avg_grade();

void print_max_grade();

void print_min_grade();

unsigned int find_median_grade();

void print_median_grade();

void print_the_grades();

private:

vector <Student> _vec;

};

#endif

פורסם

יעזור אם תדפיסי מה הבעיות :)

אוקי, אני מניח שהקלאס Student מוגדר בקובץ part2_student.h. נכון?

אז הקלאס עצמו נראה בסדר, חוץ מזה שאתה צריכה להחליף את vector ב-std::vector

(אלא אם ב-part2_student.h מופיעה השורה using namespace std, מה שלא מומלץ שיהיה)

חוץ מזה, הייתי ממליץ לך להחליף את השורה:

Students(vector <Student> vec);

ב:

Students(const std::vector <Student> &vec);

(להעביר את הוקטור by reference ולא by value)

פורסם
  • מחבר

וואו תודה זה באמת הוריד לי את מספר השגיאות.

עדין נשארו שגיאות בקובץ מיין למשל כניראה שאני לא יכולה להגדיר:

Students S;

כי אני מקבלת את הודעת השגיאה הבאה:

Students' : no appropriate default constructor available

מה הכוונה?

פורסם

בדיוק מה שהוא אמר - לא הגדרת קונסטרקטור דיפולטי.

הגדרת רק קונסטרקטור שמקבל וקטור של Student, ולכן את חייבת לאתחל את הקלאס מכזה וקטור.

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

פורסם
  • מחבר

בהמשך אני אכן מאתחלת את ה-S הזה......

אולי אני צריכה לעשות את זה באותה השורה?

S=new Students(vec);

פורסם

לא, פשוט להגדיר את S ככה:


Students S(vec);

אגב, בשביל לכתוב בפורום קוד תשתמשי ב-code (הכפתור עם הסולמית), לא בהצמדה שמאלה.

פורסם
  • מחבר

ממש תודה על הכל... אבל עדיין אני נתקלת בכמה בעיות כמו:

קליטת סטרינג:

cin<<ID<<endl;

ההודעת שגיאה היא זו:

binary '<<' : 'class std::basic_istream<char,struct std::char_traits<char> >' does not define this operator or a conversion to a type acceptable to the predefined

פורסם

ב-cin משתמשים ב-<<, ההפך מב-cout.

דרך אגב, יש הגיון בזה (הגיון קצת עקום, אבל שיהיה):

כשאת מדפיסה משהו, את כותבת את הערך המודפס לתוך cout, ולכן החצים יצביעו מהמשתנה ל-cout.

כשאת קוראת משהו, את כותבת מ-cin לתוך המשתנה, ולכן החץ יהיה מה-cin למשתנה.

פורסם
  • מחבר

זה לא פתר את הבעיה עדין יש הודעת שגיאה:

binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion

)

פורסם

כן, זה עוזר לזכור את זה ככה.

פורסם

א. מה הטיפוס של ID?

ב. לא נראה לי ש-cin יודע לקבל endl (כלומר את צריכה לכתוב רק cin>>ID)

ארכיון

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

דיונים חדשים