#c #aggregation
#c #агрегация
Вопрос:
Почему этот код ничего не выполняет после выполнения функции course.addStudent() в main? Я думаю, что проблема в этой строке
studentsEnrolled[counter] = Student;
Но я не могу понять, почему это ухудшается!
#include lt;iostreamgt; #include "string.h" using namespace std; class FCIIdentity { private: string id; string fciMail; public: FCIIdentity(string d, string fcm) { id = d; fciMail = fcm; } void setid(string d){ id =d; } string getid() { return id;} void setmail(string m) { fciMail = m; } string getmail() { return fciMail; } void print() { cout lt;lt; "id: " lt;lt; id; cout lt;lt; "mail: " lt;lt; fciMail; } }; class FCIStudent { private: string name; int age; public: FCIStudent(); FCIIdentity* fciID; FCIStudent(string n, int a, FCIIdentity f) { name = n; age = a; fciID = amp;f; } //FCIIdentity* getobject(){ return fciID; } void setage(int a){ age = a; } int getage(){return age; } void setname(string n){ name = n; } string getname(){return name; } void printdetails() { cout lt;lt; "Name: " lt;lt; name lt;lt; endl; cout lt;lt; "Age: " lt;lt; age lt;lt; endl; cout lt;lt; "ID: " lt;lt; fciID-gt;getid() lt;lt; endl; cout lt;lt; "mail: " lt;lt; fciID-gt;getmail() lt;lt; endl; } }; class FCICourse { private: string name; int counter = 0; int maxNumberOfStudentsCanBeEnrolled; FCIStudent* studentsEnrolled; public: FCICourse(); FCICourse( string names, int maxStudentsNum) { name = names; maxNumberOfStudentsCanBeEnrolled = maxStudentsNum; }; void Setname(string n){ name = n; }; string Getname(){return name; }; void Setmaxstudents(int NoOfStudent ){ NoOfStudent = maxNumberOfStudentsCanBeEnrolled; }; int Getmaxstudents(){return maxNumberOfStudentsCanBeEnrolled; }; bool addStudent(FCIStudent amp;Student) { studentsEnrolled[counter] = Student; counter ; return true; } void printAllStudentsEnrolled() { for(int i=0; ilt;counter; i ) { studentsEnrolled[i].printdetails(); cout lt;lt; endl; } } }; int main() { //Add the first student FCIIdentity m("20200818", "malek@gmail.com"); FCIStudent s("malek", 20, m); s.printdetails(); FCICourse course("OOP", 200); course.addStudent(s); cout lt;lt; "Why this doesn't executed?!!"; //Add a second student FCIIdentity m2("20200124", "Ahmed@gmail.com"); FCIStudent s2("Ahmed", 10, m2); s2.printdetails(); return 0; }
Комментарии:
1. У вас есть указатель,
FCIStudent* studentsEnrolled;
но (если только я не буду полностью слепым к коду), вы никогда не выделяете для этого никакой памяти, на которую можно указать.2. Позже я использовал его как массив. Должен ли я присвоить ему нулевое значение перед его использованием?