[英]How can I initialize with a constructor an object from another class?
我是学习c ++的新手,并且一直陷于构造函数中。我有一个Teacher
类和一个Subject
类。 在班级Teacher
,有一个对象Subject S[]
。 我如何从Teacher
类S[]
使用构造函数进行初始化? 我已经尝试过:在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();
在课堂上,老师a有一个对象Subject S []
不,你不:
Subject *S[20];
Teacher::S
是一个指针数组。
S[i].Subject();
.
用于成员访问。 指针没有成员,因此这在语法上是错误的。 此外,您永远不会直接调用构造函数。 由于初始化变量或新表达式而自动调用它。
似乎要改为具有一个Subject
对象数组作为成员。 这是您声明此类成员的方式:
Subject S[20];
数组中的对象将在执行Teacher
构造函数的主体之前构造。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.