c++ - 如何将结构定义为结构的成员?

标签 c++ struct

我正在尝试定义一个结构,其他结构作为该结构的成员,但我不确定这是如何完成的。到目前为止,我的代码如下所示:

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/

相关文章:

java - C++ vector 、java 数组等效吗?

c++ - 为什么QProcess::readAllStandardOutput不读取所有输出 channel ?

c - C 结构中的初始化和声明数组但给出错误

c++ - 如何使用Qt/QwtPlot设置固定轴间隔?

c++ - 我可以将 -0.000 打印为 0.000 吗?

c++ - 如何在 GDB 调试器命令行中调用 std::function 句柄

function - 结构拥有函数的 Rust 作用域规则

arrays - 为什么连续迭代结构数组比类数组快得多?

struct - 何时使用引用或框来拥有实现结构中特征的字段?

c - 结构体指针作为返回类型