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

C++ C++;指向在另一个结构内部的结构中定义的变量(由用户填充),c++,struct,C++,Struct,我在写清单。我想执行在另一个结构中的结构中定义的变量插入(用户端) 我的部分代码如下: #include <iostream> #include <string> using namespace std; // Global variables struct gioco {string piattaforma; string titolo; string genere; strin

我在写清单。我想执行在另一个结构中的结构中定义的变量插入(用户端)

我的部分代码如下:

#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;
                      }
#包括
#包括
使用名称空间std;
//全局变量
结构gioco{字符串piattaforma;
弦提托罗;
字符串生成;
字符串sviluppatore;
字符串发布器;
结构数据{int giorno;
int-mese;//格式数据GG/MM/AAAA
int anno;};
布尔争议;
gioco*RecordSequessivo;};
//原型
布尔·斯坦帕利斯塔(gioco*);
gioco*Aggiungioco(gioco*);
//主要功能
内部主(空)
{//局部变量(主)
char sceltaMenu='\0';
gioco*puntatoreTesta=NULL;
gioco*puntatoreCoda=NULL;
gioco*puntatoreDeposito=NULL;
//[更多代码]
stampaLista(Puntatoresta);
//[更多代码+ASCII菜单]
中国>>斯凯尔塔梅努;
开关(sceltaMenu)
{案例“1”:
Puntatoreposito=Aggiungioco(Puntatoresta);
打破
//[更多案例+默认]
}
返回0;
}
//其他职能
布尔·斯坦帕利斯塔(gioco*Puntatoresta)

{cout您需要以以下方式定义结构:

 // 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; };
然后您可以访问它:

                   gioco* puntatoreNuovo = new gioco;
                   puntatoreNuovo->recordSuccessivo = NULL;

                   ......

                   cout<<"Data di Uscita:"<<endl;
                   cin>>puntatoreNuovo->data_field.giorno >> puntatoreNuovo->data_field.mese >> puntatoreNuovo->data_field.anno;
                   ......
gioco*puntatoreNuovo=新gioco;
puntatorenuvo->recordSuccessivo=NULL;
......
cout>puntatoreNuovo->data_field.mese>>puntatoreNuovo->data_field.anno;
......

您在结构中定义了一个结构,但没有为该结构指定一个可变名称。这类似于在主结构中写入
int;
struct data
只是一个类型。
gioco
data
不是结构名称吗?它们是结构名称,或者您可以调用它们
types
。您永远不会访问它们
gico
字段通过编写
gico.field\u name
,您可以定义一个类型为
gico
的变量:
gico var;
,然后通过
var.field\u name
访问
var.field\u name
的字段。
struct data
也应该如此。非常感谢您向我解释:)没问题!不客气!我不必客气即使使用
struct gioco
,我们也必须这样做,因为我们谈论的是嵌套结构,比如
struct gioco{/*…*/}gioco_field
通过
gioco_field.data_field.giorno
/
.mese
/
.anno
访问它们?是的。完全正确。定义内部结构没有意义,因为除了
gico
结构之外,没有人可以访问它。@LorenzoMaffii我正在添加一个更正。定义内部结构的意义在于使它只对用户可见<代码> GIKO/CODE>,这种方法只用于C++封装。但是由于使用的结构更像C结构而不是C++,所以没有真正的理由。@ LoReZoMaFiS.No。您只需使用它作为容器来存储相关的属性。没有构造函数、diStruts和不同的方法。