C ++指向在另一个结构内部的结构中定义的变量(由用户填充)

时间:2015-10-30 04:33:35

标签: c++ struct

我正在处理列表。我想执行一个在另一个struct里面的struct中定义的变量插入(用户端)。

我的部分代码是:

#include <iostream>
#include <string>

using namespace std;



// Global variables
struct gioco {string piattaforma;
              string titolo;
              string genere;
              string sviluppatore;
              string publisher;
              struct data {int giorno;
                           int mese;               // Formato data GG/MM/AAAA
                           int anno;  };
              bool disponibile;
              gioco * recordSuccessivo; };


// Prototypes
bool stampaLista (gioco *);
gioco * aggiungiGioco (gioco *);


// MAIN Function
int main (void)
         {// Local Variables (MAIN)
          char sceltaMenu = '\0';
          gioco * puntatoreTesta = NULL;
          gioco * puntatoreCoda = NULL;
          gioco * puntatoreDeposito = NULL;


          // [more code]

          stampaLista (puntatoreTesta);

          // [more code + ASCII menu]

          cin>>sceltaMenu;

          switch (sceltaMenu)
                 {case '1':
                    puntatoreDeposito = aggiungiGioco (puntatoreTesta);
                    break;

                  // [more cases + default]
                 }


          return 0;
         }


// Other Functions
bool stampaLista (gioco * puntatoreTesta)
                 {cout<<endl<<"PIATTAFORMA"<<"\t"<<"TITOLO"<<"\t"<<"GENERE"<<"\t"<<"SVILUPPATORE"<<"\t"<<"PUBLISHER"<<"\t"<<"DATA DI USCITA"<<"\t"<<"DISPONIBILE"<<endl<<endl;

                  if (puntatoreTesta != NULL)
                     {gioco * puntatoreDeposito = NULL;
                      puntatoreDeposito = puntatoreTesta;

                      do {cout<<puntatoreDeposito -> piattaforma<<"\t"
                              <<puntatoreDeposito -> titolo<<"\t"
                              <<puntatoreDeposito -> genere<<"\t"
                              <<puntatoreDeposito -> sviluppatore<<"\t"
                              <<puntatoreDeposito -> publisher<<"\t"
                              <<puntatoreDeposito -> gioco.data.giorno<<"/"<<puntatoreDeposito -> gioco.data.mese<<"/"<<puntatoreDeposito -> gioco.data.anno<<"\t"
                              <<puntatoreDeposito -> disponibile<<endl;
                          puntatoreDeposito++;
                         } while (puntatoreDeposito != NULL);


                      return false;
                     }
                  else
                     {cout<<"La lista e' vuota!"<<endl<<endl<<endl;


                      return true;
                     }
                 }


gioco * aggiungiGioco (gioco * puntatoreTesta)
                      {// Local Variables
                       gioco * puntatoreNuovo = new gioco;
                       puntatoreNuovo -> recordSuccessivo = NULL;


                       cout<<"NUOVO RECORD"<<endl<<endl;

                       cout<<"Piattaforma:"<<"\t";
                       cin>>puntatoreNuovo -> piattaforma;
                       cout<<"Titolo:"<<"\t";
                       cin>>puntatoreNuovo -> titolo;
                       cout<<"Genere:"<<"\t";
                       cin>>puntatoreNuovo -> genere;
                       cout<<"Sviluppatore:"<<"\t";
                       cin>>puntatoreNuovo -> sviluppatore;
                       cout<<"Publisher:"<<"\t";
                       cin>>puntatoreNuovo -> publisher;
                       cout<<"Data di Uscita:"<<endl;
                       cin>>puntatoreNuovo -> gioco.data.giorno>>puntatoreNuovo -> gioco.data.mese>>puntatoreNuovo -> gioco.data.anno;


                       return puntatoreNuovo;
                      }

我得到的是&#34;在打印和字段填充函数中无效使用struct gioco&#34;,因为我使用语法gioco.data.giorno / { {1}} / .mese通过使用.anno构造函数指针指向它们来访问这些嵌套变量。

这几乎肯定是语法错误的问题,但我看不出正确的方法来解决这个问题。 关于如何实现我想要的任何建议?

1 个答案:

答案 0 :(得分:0)

您需要以这种方式定义结构:

-f

然后你可以访问它:

 // Global variables
 struct gioco {string piattaforma;
          string titolo;
          string genere;
          string sviluppatore;
          string publisher;
          struct data {int giorno;
                       int mese;               // Formato data GG/MM/AAAA
                       int anno;  } data_field;
          bool disponibile;
          gioco * recordSuccessivo; };