繁体   English   中英

如何使用构造函数初始化另一个类中的对象?

[英]How can I initialize with a constructor an object from another class?

我是学习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

在课堂上,老师a有一个对象Subject S []

不,你不:

 Subject *S[20]; 

Teacher::S是一个指针数组。

 S[i].Subject(); 

. 用于成员访问。 指针没有成员,因此这在语法上是错误的。 此外,您永远不会直接调用构造函数。 由于初始化变量或新表达式而自动调用它。


似乎要改为具有一个Subject对象数组作为成员。 这是您声明此类成员的方式:

Subject S[20];

数组中的对象将在执行Teacher构造函数的主体之前构造。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM