我是学习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();
见http://en.cppreference.com/w/cpp/container/list
关于c++ - 如何使用构造函数初始化另一个类中的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41594044/