Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153

    [C++]classi ed eradietà costruttore ereditato

    salve:

    ho due classi DATI contenuta in dati.h e dati.cc
    e CONTACT contenuta in contact.h e contatti.cc
    Ora CONTACT è una classe figlia di DATI

    ecco i codici:
    DATI.h
    codice:
    #include <iostream>
    #include "DATA.h"
    
    
    #ifndef DATI_h
    #define DATI_h
    
    class DATI{
        private:
            char nome[50];
            char cognome[50];
            DATA data;
        public:
        //costruttori
            DATI();//costruttore senza parametri
            DATI(const char[],const char[],DATA);//costruttore con parametri
        //modificatori
            void set_nome(const char[]);//reimposta il nome
            void set_cognome(const char[]);//reimposta il congome
            void set_data(const DATA);//reimposta la data
        //selettori
            void get_nome(char[]);//copia il nome nel parametro
            void get_cognome(char[]);//copia il conogme nel parametro
            DATA get_data();//restituisce la data di nascita
    };
    
    #endif
    codice:
    #include "DATI.h"
    
    #ifndef CONTACT_h
    #define CONTACT_h
    class CONTACT:public DATI{
        private:
            //nome char[50]
            //cognome char[50]
            //DATA data erreditati da DATI
            char indirizzo[200];
            char cellulare[50];
            char fisso[50];
            char email[100];
        public:
        //costruttori
            CONTACT(): DATI();
            CONTACT(const char[],const char[],const char[],
                    const char[],const char[],const char[],DATA);
        //selettori
            void get_indirizzo(char i[]){strcpy(i,indirizzo);}
            void get_cellulare(char c[]){strcpy(c,cellulare);}
            void get_fisso(char f[]){strcpy(f,fisso);}
            void get_email(char e[]){strcpy(e,email);}
        //modificatori
            void set_indirizzo(const char []);
            void set_cellulare(const char []);
            void set_fisso(const char []);
            void set_email(const char []);
    };
    
    #endif
    quando compilo ho questo errore:

    codice:
    C:\Users\vladimir\Desktop\Agenda elettronica\agenda\CONTACT.h|16|error: expected `{' at end of input|
    non riesco a capire perchè...se avete bisogno di DATI.cc e CONTACT.cc ve le posto nessun problema...

    grazie
    cogli l'attimo

  2. #2
    Utente di HTML.it L'avatar di ybla82
    Registrato dal
    Jan 2009
    Messaggi
    92
    hai sbagliato a scrivere il costruttore.

    tu hai scritto:
    codice:
    CONTACT(): DATI();
    invece deve scrivere
    codice:
    CONTACT(): DATI(){};
    In pratica in questo modo scrivi il codice del costruttore nel *.h, ma per farlo devi anche speficare il body del costruttore, anche se vuoto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    AH grazie....ma poi nel file CONTACT.cc devo scrive cosi?
    codice:
    CONTACT::CONTACT():DATI(){}{
       //istruzioni varie
    }
    
    oppure
    
    CONTACT::CONTACT(){
       //istruzioni varie
    }
    cogli l'attimo

  4. #4
    Utente di HTML.it L'avatar di ybla82
    Registrato dal
    Jan 2009
    Messaggi
    92
    allora se ne *.h scrivi

    codice:
    CONTACT(): DATI(){};
    non hai bisogno di riscrivere nulal nel *.cc;anzi eventuali inizializzazione le puoi scrivere direttamente lì.

    Diversamente nel *.h scrivi il costruttore come
    codice:
    CONTACT();
    e nel *.cc metti

    codice:
    CONTACT(): DATI()
    {
    //le mie istruzioni
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153

    e nel *.cc metti

    codice:
    CONTACT(): DATI()
    {
    //le mie istruzioni
    }
    ma facendo cosi il corpo del costruttore DATI() mi viene eseguito lo stesso giusto?
    cogli l'attimo

  6. #6
    Utente di HTML.it L'avatar di ybla82
    Registrato dal
    Jan 2009
    Messaggi
    92
    si si.
    lo esegui chiamando :dati()

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    ma quindi è uguale a scrivere:

    codice:
    CONTACT(){
      :: DATI();
      //altre istruzioni
    }
    cogli l'attimo

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