Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Inizializzazione struttura interna ad altra struttura definita in header
Forum Updated to NodeBB v4.3 + New Features

Inizializzazione struttura interna ad altra struttura definita in header

Scheduled Pinned Locked Moved Solved Italian
7 Posts 2 Posters 2.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bvox123
    wrote on last edited by
    #1

    Di nuvo qua a chiedere lumi.
    All'interno dell'header dichiarative, oltre a semplici variabili ho anche la struttura di una matrice a 2 dimensioni di [1000][27] costituita da un certo numero di variabili elementari. Così:

        struct TabIndicatori {
            static int PROGRESTRATTO;
            static int ESTRATTO;
            static int RITARDO;
            static int SWESITO;
            static int TABBITS;
            static int QNTBREVE;
            static int QNTMEDIA;
            static int QNTLUNGA;
            static int QNTCOMPL;
    ...
        };
        TabIndicatori static tabindicatori [1000] [27];
    
    

    Come faccio ad inizializzare questa matrice nel modulo delle inizializzazioni ? Con la semplice istruzione

    • int HRvbl::tabindicatori [1000] [27] = {0}; mi restituisce i seguenti errori di compilazione:

    0_1500892215705_Schermata del 2017-07-24 12-29-48.png

    VRoninV 1 Reply Last reply
    0
    • B bvox123

      Di nuvo qua a chiedere lumi.
      All'interno dell'header dichiarative, oltre a semplici variabili ho anche la struttura di una matrice a 2 dimensioni di [1000][27] costituita da un certo numero di variabili elementari. Così:

          struct TabIndicatori {
              static int PROGRESTRATTO;
              static int ESTRATTO;
              static int RITARDO;
              static int SWESITO;
              static int TABBITS;
              static int QNTBREVE;
              static int QNTMEDIA;
              static int QNTLUNGA;
              static int QNTCOMPL;
      ...
          };
          TabIndicatori static tabindicatori [1000] [27];
      
      

      Come faccio ad inizializzare questa matrice nel modulo delle inizializzazioni ? Con la semplice istruzione

      • int HRvbl::tabindicatori [1000] [27] = {0}; mi restituisce i seguenti errori di compilazione:

      0_1500892215705_Schermata del 2017-07-24 12-29-48.png

      VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2

      @bvox123 said in Inizializzazione struttura interna ad altra struttura definita in header:

      TabIndicatori static tabindicatori [1000] [27];

      Questo non credo sia valido C++


      Non e' totalmente chiaro quello che vuoi fare. vuoi inserire 27000 costanti a mano? se si puoi usare le doppie parentesi graffe: ={{}} mette tutto a 0, se vuoi inserire un valore lo devi fare a mano riga per riga: {{1,2,3,4, etcetera

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      0
      • B Offline
        B Offline
        bvox123
        wrote on last edited by
        #3

        In questo momento non posso complicarmi la vita implementando l'uso di un database: voglio avere tutto in memoria. Diciamo che le 1000 righe della matrice rappresentano le ultime 1000 estrazioni di una ruota del lotto. Una volta estratto, il numero viene elaborato e memorizzato in 27 differenti situazioni: ecco perché matrice a 2 dimensioni e non un semplice vettore. Prima di poter utilizzare la matrice, da quanto ho capito credo che sia indispensabile inizializzarla (all'inizio tutti gli elementi a zero). Non conoscevo la possibilità di mettere graffe nelle graffe, ho inserito la modifica, ma la compilazione va sempre in errore:
        0_1500899161297_Schermata del 2017-07-24 14-25-14.png

        VRoninV 1 Reply Last reply
        0
        • B bvox123

          In questo momento non posso complicarmi la vita implementando l'uso di un database: voglio avere tutto in memoria. Diciamo che le 1000 righe della matrice rappresentano le ultime 1000 estrazioni di una ruota del lotto. Una volta estratto, il numero viene elaborato e memorizzato in 27 differenti situazioni: ecco perché matrice a 2 dimensioni e non un semplice vettore. Prima di poter utilizzare la matrice, da quanto ho capito credo che sia indispensabile inizializzarla (all'inizio tutti gli elementi a zero). Non conoscevo la possibilità di mettere graffe nelle graffe, ho inserito la modifica, ma la compilazione va sempre in errore:
          0_1500899161297_Schermata del 2017-07-24 14-25-14.png

          VRoninV Offline
          VRoninV Offline
          VRonin
          wrote on last edited by
          #4

          Da come la descrivi non dovrebbe essere una static.

          Il messaggio del tuo compilatore deriva dalla definizione della stessa variabile in piu' di un file .cpp come spiegato qui: https://forum.qt.io/topic/81514/ridefinizione-di-variabili-globali-con-clausa-extern/15

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          1 Reply Last reply
          0
          • B Offline
            B Offline
            bvox123
            wrote on last edited by
            #5

            Sono un po' confuso.
            Nell'header delle definizioni ho dichiarato la struttura TabIndicatori come ho detto poco fa e subito dopo ho dichiarato la matrice di 1000 x 27 elementi di quella struttura. A questo punto, da quanto avevo intuito l'altra volta, per potere utilizzare quella matrice la devo inizializzare. Se non la definisco subito dopo la definizioe della struct, quando provo a crearla inizializzandola mi dice:
            0_1500906082953_Schermata del 2017-07-24 16-20-35.png
            mentre se la definisco come ho detto prima, cioè inserendo nell'header static TabIndicatori tabindicatori [1000] [27]; e nel modulo .cpp la inizializzo, ho questi errori:
            0_1500906582822_Schermata del 2017-07-24 16-29-16.png

            come posso risolvere il problema ?

            1 Reply Last reply
            0
            • B Offline
              B Offline
              bvox123
              wrote on last edited by
              #6

              Credo di avere risolto.
              Ho portato la struct TabIndicatori al di fuori della struct HRvbl, quindi le due strutture non sono più una dentro l'altra e nella struttura HRvbl c'è solo la definizione della matrice. Così: static TabIndicatori tabindicatori [1000] [27];
              Fra le inizializzazioni c'è poi l'istruzione TabIndicatori HRvbl::tabindicatori [1000] [27] = {{}};
              Ora funziona.

              1 Reply Last reply
              1
              • VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by
                #7

                ultimo punto:

                @bvox123 said in Inizializzazione struttura interna ad altra struttura definita in header:

                per potere utilizzare quella matrice la devo inizializzare

                non esattamente, ti basta definirla, non serve inizializzarla. Puoi togliere = {{}} e funziona lo stesso. in pratica c'e' poca differenza.

                P.S.
                Non lasciare quella matrice a visibilita' (e ciclo vitale) globale. Quasi sicuramente non ce n'e' bisogno.

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved