首页 > 解决方案 > 初始化嵌套结构会在 C++ 中引发错误

问题描述

我正在学习 C++ 中的结构。执行代码时出现以下错误:

错误:CompData 的初始化程序太多。

如果有人能指出错误,那就太好了。

代码:

#include <iostream>
#include <string>

struct EmpData
{
    std::string name;
    int age;
    double salary;
};

struct DepartmentData
{
    std::string departmentName;
    struct EmpData;
};

struct CompData
{
    std::string compName;
    struct DepartmentData;
};

int main()
{
    CompData DeltaF 
    {
        "DeltaF",
        {
            "Product Development",
            {
                "Steve", 35, 1223
            }
        }
    };
    
}

标签: c++struct

解决方案


这里:

struct DepartmentData
{
    std::string departmentName;
    struct EmpData;
};

你声明一个结构EmpData,全称是DepartmentData::EmpDataEmpData它与您在上面声明和定义的类型不同。如果你想DepartmentData拥有一个类型的成员,EmpData你可以删除struct并需要给它一个名字:

struct DepartmentData
{
    std::string departmentName;
    EmpData empData;             // member of type EmpData called empData
};

DepartmentData成员也一样CompData。如果你修复了这些,你的代码编译不会出错。


推荐阅读