Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286

    [C++] Funzione che ritorna un puntatore double (*)[4][3]

    Ho una funzione che mi dovrà ritornare un puntatore ad un array dinamico multidimensionale con una dimensione non specificata in partenza, ma che andrò a determinare in runtime. La funzione è così scritta:

    codice:
    
    double *MyArray()
    {
    
      #define  m 4
      #define  n 3
    
      int  l;
    
      // Qui faccio qualcosa che mi detewrmina il valore di "l". 
    
      double  (*Arr)[m][n];
      Arr = new double   [l][m][n];
    
      // Qui assegno tutti gli elementi all'array 
    
      return  Arr;
    }
    Il problema è che io non so come va scritto il tipo di ritorno di un puntatore come quello che ho appena dichiarato, infatti l'errore è questo:

    codice:
     : error C2440: 'return' : cannot convert from 'double (*)[4][3]' to 'double *'
    Qualche suggerimento?

    Ringrazio in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    return((double *)Arr);

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Originariamente inviato da oregon
    return((double *)Arr);
    Sei un mito oregon, con questa scrittura funziona perfettamente, grazie al puntatore restituito dalla funzione riesco a invocare tutti gli elementi dell'array.

    Colgo l'occasione per dissipare un altro dubbio dovuto alla mia inesperienza:

    All'interno della funzione non posso deallocare la memoria dinamica:

    codice:
    delete [] Arr;
    Perché così facendo avrò rilasciato la memoria prima di poterla utilizzare, potrò farlo allora nel corso del programma utilizzando il puntatore a cui avrò passato l'indirizzo dell'array (quello che riceve il valore di ritorno della funzione)? Ad esempio:

    codice:
    delete [] lastPointer;
    In questo modo avrò rilasciato lostesso la memoria della mia array dinamica?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In questo modo avrò rilasciato lostesso la memoria della mia array dinamica?
    Sì ...

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.