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

Inizializzazione struttura interna ad altra struttura definita in header

Scheduled Pinned Locked Moved Solved Italian
7 Posts 2 Posters 2.4k 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