Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [c++] costruttore crea matrice

    Salve raga, dovrei fare un semplice esercizio sugli oggetti, che gestisce le matrici.

    Ora dovrei realizzare un costruttore, che mi definisca la matrice (cioe' numeri di righe e colonne).

    io ho fatto cosi:
    codice:
    class Matr
    {
     public:
     void Matrice (int R,int C)
     {
      int mat[R][C];
     }
    };
    Fin qui tutto bene, pero poi, negli altri metodi se utilizzo "mat", mi dice che non e' dichiarata

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [c++] costruttore crea matrice

    Originariamente inviato da Salvatore_91
    Fin qui tutto bene, pero poi, negli altri metodi se utilizzo "mat", mi dice che non e' dichiarata
    "mat" è dichiarata all'interno del metodo Matrice, pertanto la sua visibilità è ridotta a quel metodo.

    E comunque il tuo metodo "Matrice" non è un costruttore: il valore di ritorno non va indicato, neanche void e il nome deve essere lo stesso della classe.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [c++] costruttore crea matrice

    pero poi, negli altri metodi se utilizzo "mat", mi dice che non e' dichiarata
    Ed ha ragione, dato che l'hai dichiarata localmente al costruttore.

    Come saprai le variabili locali non esistono fuori dalla funzione in cui sono dichiarate ...

    Per fare quello che dice l'esercizio, devi dichiarare un puntatore doppio ad intero privato nella classe e usarlo per allocare dinamicamente la matrice nel costruttore.

    Tramite il puntatore, la matrice sarà utilizzabile dal resto della classe.

    Non dimenticare di scrivere il codice per liberare la memoria nel distruttore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    in che senso:
    un puntatore doppio ad intero privato nella classe???

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Salvatore_91
    in che senso:
    un puntatore doppio ad intero privato nella classe???
    Non c'e' "un senso" particolare ...

    private:
    int **matrice;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    bho, non ho capito.

    Cmq nel costruttore (il puntatore doppio) come lo devo utilizzare?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Salvatore_91
    bho, non ho capito.
    Scusa ... cosa non hai capito?

    Perche', se non hai capito questa parte, non potrai andare avanti nell'allocazione e ti conviene fare un passo indietro a studiare i puntatori del C ...

    Cmq nel costruttore (il puntatore doppio) come lo devo utilizzare?
    Allocando la memoria che ti serve.

    Scusa, a prescindere dal C++, se lavorassi con il C, come allocheresti dinamicamente una matrice di interi ?


    (Con il C++ userai la new per allocare al posto della malloc e la delete per liberare la memoria al posto della free, ma se lo sai fare in C, lo sai fare anche in C++ ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    okok hai ragione, mi stavo perdendo in un bicchier d'acqua.


    ecco:
    codice:
    class Matrice
    {
     private:
             int **mat;
             
     public:
     int R,C;
     
         Matrice(int R,int C)
         {
            int mat[R][C];
         }
    };

  9. #9
    scusami ancora,
    utilizzando il codice scritto sopra.

    negli altri metodi, come posso acquisire i valori nella matrice???
    io faccio cosi:
    codice:
           for (i=0;i<R;i++)
           for (j=0;j<C;j++)
               {
                cout<<"Inserisci in "<<i+1<<","<<j+1<<" = ";
                cin>>mat[i][j]; 
               }
    dove R e' il numero di righe
    C e' il numero di colonne

    compilandolo non mi da nessun erroe di sintassi, ma eseguendolo, appena inserisco un valore e digito invio, mi dice: errore..... segnalazione a windows ecc ecc

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Guarda che il codice che hai scritto non ha senso ...

    Non hai allocato dinamicamente la matrice tramite il puntatore e continui ad usare una matrice locale al costruttore (che abbia lo stesso nome non ha alcuna importanza) ...

    Cerca nel forum ... ci sono delle discussioni sull'allocazione delle matrici tramite puntatori ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.