我正在尝试定义一个结构,其他结构作为该结构的成员,但我不确定这是如何完成的。到目前为止,我的代码如下所示:
typedef struct name
{
char fname[15];
char lname[15];
} Name;
typedef struct info
{
int grade;
char phone[13];
} Info;
typedef struct mark
{
int math;
int sci;
int eng;
} Mark;
typedef struct student
{
Name n;
Info i;
Mark m;
} Student;
int main()
{
Student class_list[30] = { };
}
最佳答案
如果你的问题是如何初始化数组那么答案是这样的:
Student class_list[2] = {
{{"John", "Doe"}, {8, "000-555-000"}, {1, 2, 3}},
{{"Jane", "Doe"}, {10, "000-555-001"}, {10, 8, 10}},
};
它之所以这样工作是因为你的类是聚合的,所以你可以使用 aggregate initialization .
好吧,我初始化了一个包含 2 个元素的数组。你可以看到语法。
您的程序的一些要点。 typedef struct
的方式是 C 惯用语。在 C++ 中您不需要它,因此请将所有定义更改为:
struct Name
{
char fname[15];
char lname[15];
};
您还应该使用 std::array
而不是 C 数组:
std::array<Student, 3> class_list {{
{{"John", "Doe"}, {8, "000-555-000"}, {1, 2, 3}},
{{"Jane", "Doe"}, {10, "000-555-001"}, {10, 8, 10}},
}};
关于c++ - 如何将结构定义为结构的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505918/