我是学习c ++的新手,并且陷入了构造函数的困扰。我有一个Teacher类和一个Subject类。在类Teacher中,有一个对象Subject S[]。如何使用类TeacherS[]中的构造函数进行初始化?我已经试过了:
在Teacher.h文件中

class Teacher
{
  private:
    string name;
    Subject *S[20];
  public:
    Teacher();
}


在Teacher.cpp文件中

Teacher::Teacher()
{
  name=" ";
  for(int i=0; i<20; i++)
  {
    S[i].Subject();
  }
}


在Subject.cpp文件中,构造函数为:

Subject::Subject()
{
  day=0;
  hour=0;
  for(int i=0; i<10; i++)
  {
    classroom[i]=" ";
  }
}

最佳答案

您目前拥有的方式,您必须编写

S[i] = new Subject();

而不是

S[i].Subject();

但这使您不得不记住一定要调用delete的负担。使用会更好

std::list<Subject> S;

代替

Subject *S[20];

然后push_back甚至是闪光的emplace_back代替S[i].Subject();

http://en.cppreference.com/w/cpp/container/list

关于c++ - 如何使用构造函数初始化另一个类中的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41594044/

10-13 01:19