簡體   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