C++ 结构中的结构
我有一个结构C++ 结构中的结构,c++,arrays,struct,C++,Arrays,Struct,我有一个结构 struct Course{ int cId; string courseName; }; 我想为每门课程增加学生。我想在struct课程中定义另一个struct,如 struct Course{ int cId; string courseName; struct Student{ int sId; string studentName; }; }; 如果我像这样定义struc
struct Course{
int cId;
string courseName;
};
我想为每门课程增加学生。我想在struct课程中定义另一个struct,如
struct Course{
int cId;
string courseName;
struct Student{
int sId;
string studentName;
};
};
如果我像这样定义struct,我怎么能使用它呢?我有课程*cptr=新课程[1]代码>
用于使用struct课程。
如何将学生添加到指定的cId?您的课程
不包含学生
。它只定义了该名称的结构,即类型Course::Student
。要使一个类型包含另一个类型的实例,只需声明一个成员变量:
struct Student { .... };
struct Course
{
....
Student student;
};
如果您希望每门课程容纳多个学生
,则可以使用容器。在缺乏更多信息的情况下,最好的候选方法是std::vector
:
struct Course
{
....
std::vector<Student> students;
};
struct课程
{
....
性病:病媒学生;
};
您的课程
不包含学生
。它只定义了该名称的结构,即类型Course::Student
。要使一个类型包含另一个类型的实例,只需声明一个成员变量:
struct Student { .... };
struct Course
{
....
Student student;
};
如果您希望每门课程容纳多个学生
,则可以使用容器。在缺乏更多信息的情况下,最好的候选方法是std::vector
:
struct Course
{
....
std::vector<Student> students;
};
struct课程
{
....
性病:病媒学生;
};
std::vector
是您的朋友,但如果不允许您使用,您可以:
struct Student {...}; // Implementation omitted for brevity...
struct Course
{
Student *students_; // Use students_=new Student[num_students]; to allocate
// memory dynamically
};
std::vector
是您的朋友,但如果不允许您使用,您可以:
struct Student {...}; // Implementation omitted for brevity...
struct Course
{
Student *students_; // Use students_=new Student[num_students]; to allocate
// memory dynamically
};
这定义了一个结构课程
和另一个结构课程::学生
,但是课程
没有实例化任何学生(没有课程
的成员具有类型学生
)。当然,如果你想让学生成为会员,你需要这样的东西:
struct Course
{
// ...
struct Student
{
int sId;
string studentName;
} student;
};
或
将单个学生或10名学生的数组分别定义为课程
的成员。(注意:std::vector
比静态大小的数组更好)
或者,您可以将学生
声明为课程
之外的结构:
struct Student { ... };
struct Course
{
// ...
Student student;
// or std::vector<Student> students;
// or std::array<Student, 10> students;
// or Student* students
};
struct Student{…};
结构课程
{
// ...
学生;
//或性病媒学生;
//或学生;
//还是学生
};
这定义了一个结构课程
和另一个结构课程::学生
,但是课程
没有实例化任何学生(没有课程
的成员具有类型学生
)。当然,如果你想让学生成为会员,你需要这样的东西:
struct Course
{
// ...
struct Student
{
int sId;
string studentName;
} student;
};
或
将单个学生或10名学生的数组分别定义为课程
的成员。(注意:std::vector
比静态大小的数组更好)
或者,您可以将学生
声明为课程
之外的结构:
struct Student { ... };
struct Course
{
// ...
Student student;
// or std::vector<Student> students;
// or std::array<Student, 10> students;
// or Student* students
};
struct Student{…};
结构课程
{
// ...
学生;
//或性病媒学生;
//或学生;
//还是学生
};
一个非常简单的方法:
struct Student
{
int sId;
string studentName;
};
struct Course
{
int cId;
string courseName;
std::vector <Student> students;
};
一个非常简单的方法:
struct Student
{
int sId;
string studentName;
};
struct Course
{
int cId;
string courseName;
std::vector <Student> students;
};
我希望您将这个结构分为两个单独的结构。然后可以在课程结构中初始化学生对象。或者你可以在课程结构中实现一个函数来链接学生结构。我希望你把这个结构分成两个单独的结构。然后可以在课程结构中初始化学生对象。或者你可以在课程结构中实现一个函数来链接学生结构。嵌套结构?为什么?有什么好的理由这样做吗?为你在另一个结构中声明的struct
添加一个成员。你应该在他们授课时上课arrays@MichaelGoldshteyn:当他们教授标准容器时,你应该参加课程。@phresnel,如果你读了原始海报上对答案的评论,你会发现没有这样的课程!嵌套结构?为什么?有什么好的理由这样做吗?为你在另一个结构中声明的struct
添加一个成员。你应该在他们授课时上课arrays@MichaelGoldshteyn:当他们教授标准容器时,你应该参加课程。@phresnel,如果你读了原始海报上对答案的评论,你会发现没有这样的课程!但是学生的数量可以改变执行,所以我应该动态分配内存。我怎么能这么做?您可以使用一个指针,并使用new[]
(以及使用delete[]
取消分配)来分配它,而不是使用student[10]?@mxyz。如果这是您的要求,我最后一个示例中的最后一个//或将是您需要使用的方法-如果您不允许使用std::vector
。例如,我有指定课程的cptr[1]。如果我想将学生添加到此课程中,我如何使用stedents?假设cptr[1]
是课程的一个实例
,类似于cptr[1]。学生=新学生[SIZE];cptr[1]。学生[0]。sId=SOMEID但是学生的数量可以改变执行,所以我应该动态分配内存。我怎么能这么做?您可以使用一个指针,并使用new[]
(以及使用delete[]
取消分配)来分配它,而不是使用student[10]?@mxyz。如果这是您的要求,我最后一个示例中的最后一个//或将是您需要使用的方法-如果您不允许使用std::vector
。例如,我有指定课程的cptr[1]。如果我想将学生添加到此课程中,我如何使用stedents?假设cptr[1]
是课程的一个实例
,类似于cptr[1]。学生=新学生[SIZE];cptr[1]。学生[0]。sId=SOMEID代码>