在复合 class 中使用另一个 class 作为向量

Using another class as vector in a composite class

我有2个class,它们是复合关系。如何将 class 作为向量包含在另一个 class 中?谁能告诉我如何初始化向量?

class Student{
int id;
string name;
public:
 Student(int id = 0, string name = "NA")
: id(id), name(name) {}
int getId() {return id;}
string getName() {return name;}
};

class Faculty{
int id;
string name;
vector<Student> student;
public:
 Faculty(int id = 0, string name = "NA", vector<Student> student)
 {
 id = id;
 name = name;
 student = student;
}
int getId() {return id;}
string getName() {return name;}
};

如果您要对数据成员和构造函数参数使用相同的标识符,则需要使用初始化列表来初始化它们——而不是在函数体中。

class Faculty{
  int id;
  string name;
  vector<Student> student;

   public:
   Faculty(int id = 0, string name = "NA", vector<Student> student={})
   : id(id)
   ,name(name)
   ,student(student)
   {}
};

您可以为具有空初始化列表的向量提供默认参数。

如果您只打算给一些 参数默认值,它们必须在没有指定默认值的参数之后。这就是您的示例代码无法编译的原因。