我有结构
struct Course{
int cId;
string courseName;
};
我想为每门课程添加学生。我想在结构化课程中定义另一个结构,如
struct Course{
int cId;
string courseName;
struct Student{
int sId;
string studentName;
};
};
如果我像这样定义struct我怎么能用呢?我有Course * cptr = new Course[1];
哪个用于结构课程。
我怎样才能将学生添加到指定的cId?
答案 0 :(得分:5)
您的Course
不包含Student
。它只定义了该名称的结构,即类型Course::Student
。对于包含其他类型的实例的类型,您只需声明一个成员变量:
struct Student { .... };
struct Course
{
....
Student student;
};
如果您希望每个课程容纳多个Student
,那么您可以使用容器。在没有更多信息的情况下,最佳候选人是std::vector
:
struct Course
{
....
std::vector<Student> students;
};
答案 1 :(得分:0)
std::vector
是您的朋友,但如果您不被允许使用,您可以这样做:
struct Student {...}; // Implementation omitted for brevity...
struct Course
{
Student *students_; // Use students_=new Student[num_students]; to allocate
// memory dynamically
};
答案 2 :(得分:0)
struct Course
{
// ...
struct Student
{
int sId;
string studentName;
};
};
这定义了一个struct Course
和另一个struct Course::Student
,但是Course
没有实例化任何学生(没有Course
的成员{{1} }})。如果你希望学生成为课程的一员,你需要这样的东西:
Student
或
struct Course
{
// ...
struct Student
{
int sId;
string studentName;
} student;
};
分别定义一名学生或一组10名学生作为struct Course
{
// ...
struct Student
{
int sId;
string studentName;
} students[10];
};
的成员。 (注意:Course
将是一个比静态大小的数组更好的选择)
或者,您可以将std::vector
声明为Student
之外的结构:
Course
答案 3 :(得分:0)
一种非常简单的方法:
struct Student
{
int sId;
string studentName;
};
struct Course
{
int cId;
string courseName;
std::vector <Student> students;
};
这样你可以写
Student s;
Course c;
c.students.push_back(s);
答案 4 :(得分:0)
我希望您将此结构划分为两个单独的结构。然后,您可以在Course结构中初始化学生对象。或者你可以在Course结构中实现一个函数来链接Student结构。