Visualizzazione dei risultati da 1 a 9 su 9

Discussione: C++ costruttori

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    C++ costruttori

    ciao a tutti. ho un problema con un pezzo di codice riguardante la creazione di una classe matrice. io ho fatto i seguenti codici:

    matric.h

    [CODE]
    #ifndef _MATRICE_H
    #define _MATRICE_H

    typedef int tipoelem;

    class matrice
    {
    pubblic:
    matrice(int, int);
    matrice creamatrice();
    tipoelem leggimatrice(int, int);
    void scrivimatrice(int, int, tipoelem);
    matrice eseguiprodotto(matrice, int, int, matrice, int, int);
    private:
    int righe;
    int colonne;
    tipoelem matrix[righe][colonne];
    }

    #endif
    [\CODE]

    matrice.cpp
    [CODE]
    #include "matrice.h"
    #include <iostream>

    matrice(int riga, int colonna)
    {
    righe = riga;
    colonne = colonna;
    }

    void matrice::creamatrice()
    {
    int i, j;
    for(i = 0; i < righe; i++)
    {
    for(j = 0; j < colonne; j++)
    {
    cin >> matrix[i][j];
    cout << " ";
    }
    cout << "\n";
    }
    }

    tipoelem matrice::leggimatrice(int riga, int colonna)
    {
    return(matrix[riga][colonna]);
    }

    void matrice::scrivimatrice(int riga, int colonna, tipoelem elemento)
    {
    matrix[riga][colonna] = elemento;
    }

    matrice &matrice::eseguiprodetto(matrice matA, int rigA, int colA, matrice matB, int rigB, int colB)
    {
    if(colA != rigB)
    {
    cout << "il prodotto non si puo' effettuare!\n\n\n";
    return 0;
    }

    tipoelem matC[rigA][colB] = 0;

    for(int i = 0; i < rigA; i++)
    {
    for(int j = 0; j < colB; j++)
    {
    for(int p = 0; p < colA; p++)
    {
    matC[i][j] = matC[i][j] + matA[i][p]*matB[p][j];
    }
    cout << " ";
    }
    cout << "\n";
    }

    return(matC);
    }
    [\CODE]

    quando lo compilo mi dà il seguente errore:
    invalid use of undefined type 'class matrice'
    questo alla linea 9 del file.h.
    cosa c'è che non va? secondo me il costruttore sta fatto bene.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    perché invece di scrivere:

    matrice creamatrice();

    dovresti scrivere:

    void creamatrice();
    cogli l'attimo

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    va beh io le correzioni le faccio man mano che correggo gli errori precedenti. cmq l'errore che riscontro io e che ho scritto nella discussione è relativo al primo costruttore, cioè a matrice(int, int);

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    16
    Ciao pietrol83,
    Attenzione a ricordarti di mettere il ; dopo che hai creato la classe.

    matrice creamatrice();
    come ha detto il compano precedentemente, dovresti cambiarlo, e così vale anche per il metodo dentro la classe.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    il problema persiste. ho messo il ; alla fine della classe e ho anche cambiato il metodo creamatrice scrivendo void creamatrice. non è cambiato niente: mi da sempre lo stesso errore al primo costruttore.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    16
    Ora che ho provato, ci sono un sacco di errori, a partire che public si scrive con un b.. manca il costruttore (sai cosa è!?), in ogni caso devi aggiungere matrice(); e solitamente segue anche il distruttore...
    E' sbagliato dichiarare tipoelem matrix[righe][colonne]; come privato. al massimo la crei quando vai a chiamare appunto il costruttore!
    Ti ho già consigliato di studiare, fallo da un buon libro.. e non saltare cercando di svolgere esercizi del prof.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    Originariamente inviato da pietrol83
    va beh io le correzioni le faccio man mano che correggo gli errori precedenti. cmq l'errore che riscontro io e che ho scritto nella discussione è relativo al primo costruttore, cioè a matrice(int, int);
    veramente tu hai detto che l'errore era questo matrice creamatrice();
    e alla riga nove io vedo matrice creamatrice(); non il costruttore matrice(int,int);
    cogli l'attimo

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E dentro il .cpp deve essere

    matrice::matrice(int riga, int colonna)

    e non semplicemente

    matrice(int riga, int colonna)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9

    Re: C++ costruttori

    Originariamente inviato da pietrol83
    [CODE]

    [\CODE]
    usa "/" non "\" per chiudere i tag
    ;-)

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.