Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Matrice di Oggetti

    Salve a tutti,
    sono alle prese con questo problema:

    devo creare un sistema per la gestione di una compagnia aerea in C++.
    Ho creato una classe Aereo, che è costituita da una matrice di Posti (altra classe).
    Ora allora dinamicamente la matrice:


    codice:
    	posti = new Posto*[file];
    
    	for(int i = 0; i<file; i++)
    		posti[i]= new Posto[colonne];
    ora però sorge un problema:
    come faccio ad inizializzare i posti direttamente con il costruttore??
    I posti hanno un numero e una posizione (Finestrino, centro, corridoio).
    già mi da errore se definisco un costruttore con dei parametri (infatti non mi è concesso di fare new Posto(a,b,c)[colonne]; )
    Devo per forza crearmi un metodo per farlo??

    Qualche suggerimento??

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Purtroppo il C++ non ti permette di richiamare un costruttore con dei parametri quando usi la new per creare un array. Ti serve un costruttore senza argomenti, e poi devi inizializzarli singolarmente con un metodo.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  3. #3
    Grazie per la risposta.

    Mi hanno appena detto che programmare ad oggetti utilizzando matrici di oggetti è molto "fondamenti" e non "oop"...
    ora mi viene una tristezza dopo tutte le ore che ho perso per farlo

  4. #4
    Originariamente inviato da Ippo343
    Purtroppo il C++ non ti permette di richiamare un costruttore con dei parametri quando usi la new per creare un array. Ti serve un costruttore senza argomenti, e poi devi inizializzarli singolarmente con un metodo.
    Va detto tuttavia che è possibile allocare prima la memoria necessaria e poi usare l'operatore placement new per richiamare i costruttori uno alla volta. Non so poi però se il delete[] sia in grado di fare l'operazione inversa senza problemi...
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    No, delete[] non può essere usato col placement new.
    Occorre richiamare esplicitamente il distruttore di ogni singolo oggetto (e a volte la sintassi varia da compilatore a compilatore), e poi usare operator delete sul blocco di memoria.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.