Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491

    [c++]Dichiarazione array

    Scusate, non riesco a venirne fuori...
    Quello che voglio fare è:
    1)Dichiarare nell'intestazione della classe una array
    2)Nel costruttore della classe impostarne la grandezza.
    Qui è come faccio io, ma non funziona...non so come fare.grazie:
    codice:
    class Tavolo{
    //.....
    //....    
      private: int cards[];
                                                     
    };
    
    
    Tavolo :: Tavolo(const int SIZE)
    {
      //BOH???
    }
    Al posto di BOH?? vorrei specificare la grandezza dell'array (SIZE), ma si può fare?
    In alternativa avevo dichiarato un puntatore così:
    codice:
    class Tavolo{
    //.....
    //....    
      private: int *cardsPtr;
                                                     
    };
    
    
    Tavolo :: Tavolo(const int SIZE)
    {
      int cards[SIZE];
      cardsPtr = cards;
    }
    Sintatticamente è giusto, ma credo ci sia un errore di logica....l'array cards ha visibilità della funzione, mentre il puntatore visibilità di classe, allora quando finisce il costruttore il puntatore punta qualcosa che non esiste più!! Giusto?
    Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    codice:
    class Tavolo{
    //.....
    //....    
      private: int *cardsPtr;
      int SIZE;
                                                     
    };
    
    
    Tavolo :: Tavolo(const int lunghezza)
    {
    //necessario ricordarsi le dimensioni
      SIZE = lunghezza;
    //Alloca la memoria
      cardsPtr = new cards[SIZE];
    } 
    
    Tavolo :: ~Tavolo()
    {
    //libera la memoria
      delete [lunghezza] cardsPtr;
    }

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Grazie della risposta, scusa ma sono alle prime armi, il mio dubbio è: in questo modo il puntatore, che ha visibilità di classe, punta ad un array che è dichiarato nel costruttore, quando il costruttore sarà concluso (e quindi l'array non esisterà più) a cosa punterà cardsPtr???
    Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Comunque perfetto ora funziona!
    Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  5. #5
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    l'operatore new alloca una quantità di memoria e ne restituisce il puntatore.
    Quindi in quel codice:
    Con new chiedo al SO di allocare la memoria necessaria per l'array.
    Il puntatore a questa area di memoria viene restituito da new e assegnato a arrayPtr. Qundi si tratta di una normale assegnazione.
    La memoria allocata con new non viene distrutta alla fine della funzione, ma solo con delete (vedi distruttore)


  6. #6
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ho capito, grazie in effetti non sono ancora arrivato al capitolo "Allocazione dinamica", ma mi pare molto simile al Java....Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.