[英]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.