Как я могу прочитать вложенную структуру в моем коде? - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь создать структуру, в которой есть вложенная структура (подструктура). Как определить такую ​​подструктуру и как получить к ней доступ извне?

Вот мои структуры:


    struct Uniform
        {
           std::string color;
        };

    struct Team
    {
        std::string tname;
        int poensHome;
        int poensGuest;
        Uniform teamUniform;

    };

    struct Player
    {
        std::string name;
        std::string surname;
        int goals;
        Team* team;
    };

Вот функция, которая должна считывать значения в команда, как я могу прочитать значение вложенной структуры UniformiformTeam?

   void read1(Team a[],int n)    
    {
        int i;
        for(i=0;i<n;i++)
        {
            cout<<endl<<"Name of the team:";
            cin>>a[i].tname;
            cout<<endl<<"Poens of the team (home):";
            cin>>a[i].poensHome;
            cout<<endl<<"Poens of the team(guest)";
            cin>>a[i].poensGuest;


        }
    }

Прочитать ли я по:

    cout<<endl<<"color  of the team uniform";
    cin>>a[i].Uniform.teamUniform;

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Читайте так же, как вы читаете любой элемент структуры, нет ничего особенного во вложенных структурах (кроме вложений).

cout<<endl<<"color  of the team uniform";
cin>>a[i].teamUniform.color;
0 голосов
/ 31 марта 2020

В вашем примере нет вложенной структуры. Вы объявили структуру и использовали ее в другой структуре. Вложенная структура:

struct A { 
    struct B {};
};

У вас есть

struct A{};
struct B {
    A a;
};

Вы можете написать с помощью

cin>>a[i].teamUniform.color;

Ничего особенного.

Вы можете вложите свои структуры

struct Player
{
    struct Team
    {
        struct Uniform
        {
           std::string color;
        };
        std::string tname;
        int poensHome;
        int poensGuest;
        Uniform teamUniform;

    };
    std::string name;
    std::string surname;
    int goals;
    Team* team;
};

но я думаю, что вы что-то путаете. Возможно, это не то, что вам действительно нужно.

Вы можете объявить структуру и объявить член на одном шаге:

struct Player
{
    struct Team
    {
        struct Uniform
        {
           std::string color;
        } teamUniform;
        std::string tname;
        int poensHome;
        int poensGuest;
    }* team;
    std::string name;
    std::string surname;
    int goals;
};

В этом случае структуры могут быть анонимными:

struct Player
{
    struct
    {
        struct
        {
           std::string color;
        } teamUniform;
        std::string tname;
        int poensHome;
        int poensGuest;
    }* team;
    std::string name;
    std::string surname;
    int goals;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...