Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    98

    error C2512: 'impiegato' : no appropriate default constructor available

    Raga come mai il compilatore mi da questo errore?! Ecco il codice.

    impiegato.h
    codice:
    #ifndef _IMPIEGATO_
    #define _IMPIEGATO_
    #include <string>
    
    #define DIM 30
    
    static int numero_ = 1000;
    
    class impiegato
    {
    protected:
    
        mutable int stipendio_;
        int matricola_;
        std::string nome_;
        std::string cognome_;
    
    public:
    
        impiegato(std::string, std::string, int);
        ~impiegato();
        std::string getNome() const;
        std::string getCognome() const;
        int getStipendio() const;
        int getMatricola() const;
        std::string getInfo() const;
    
    };
    
    #endif // _IMPIEGATO_
    impiegato.cpp
    codice:
    #include "impiegato.h"
    #include <string>
    
    using namespace std;
    
    impiegato::impiegato(string nome, string cognome, int stipendio)
    {
        nome_ = nome;
        cognome_ = cognome;
        stipendio_ = stipendio;
        matricola_=numero_++;;
    
    }
    
    
    impiegato::~impiegato() {}
    
    
    string impiegato::getNome() const
    {
        return nome_;
    }
    string impiegato::getCognome() const
    {
        return cognome_;
    }
    
    int impiegato::getStipendio() const
    {
        return stipendio_;
    }
    
    int impiegato::getMatricola() const
    {
        return matricola_;
    }
    
    std::string impiegato::getInfo() const
    {
        return "Impiegato";
    }
    dipendente.h
    codice:
    #ifndef _DIPENDENTE_
    #define _DIPENDENTE_
    
    #include "impiegato.h"
    
    class dipendente: public impiegato
    {
    private:
    
        int bonus_;
    
    public:
    
        dipendente(std::string, std::string, int, int);
        ~dipendente();
        void setBonus(int);
        int getStipendio() const;
    };
    
    #endif // _DIPENDENTE_
    dipendente.cpp
    codice:
    #include "dipendente.h"
    #include <string>
    
    using namespace std;
    
    dipendente::dipendente(string nome, string cognome, int stipendio, int bonus)
    {
        impiegato(nome,cognome,stipendio);
        bonus_ = bonus;
    }
    
    dipendente::~dipendente() {}
    
    void dipendente::setBonus(int bonus)
    {
        bonus_ = bonus;
    }
    
    int dipendente::getStipendio() const
    {
        stipendio_ = stipendio_+bonus_;
        return stipendio_;
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: error C2512: 'impiegato' : no appropriate default constructor available

    Originariamente inviato da sccc
    codice:
    dipendente::dipendente(string nome, string cognome, int stipendio, int bonus)
    {
        impiegato(nome,cognome,stipendio);
        bonus_ = bonus;
    }
    Non è così che si chiama il costruttore della classe base.

    Il modo corretto è:
    codice:
    dipendente::dipendente(string nome, string cognome, int stipendio, int bonus)
        : impiegato(nome,cognome,stipendio)
    {
        ......
    }

    P.S.: il valore statico

    static int numero_ = 1000;

    mettilo nel sorgente impiegato.cpp, non nel header!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    98
    grande...grazie mille

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da sccc
    error C2512: 'impiegato' : no appropriate default constructor available
    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Qui l'ho aggiunto io.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.