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

时间:2016-01-06 05:52:12

标签: c++ class vector composite

我有2个班级,他们有复合关系。如何将该类作为向量包含在另一个类中?谁能告诉我如何初始化矢量?

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;}
};

1 个答案:

答案 0 :(得分:0)

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

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)
   {}
};

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

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