Почему этот код на c не работает? (лаборатория по агрегированию)

#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. Позже я использовал его как массив. Должен ли я присвоить ему нулевое значение перед его использованием?