Raga vi spiego subito il mio problema. Ho creato due classi: Personale e Impiegato che è derivata dalla prima. Definisco due metodi di stampa differenti. Quando vado nel main e uso il metodo di stampa, mi funziona quello della Classe Personale e non quello di Impiegato: come mai? Vi posto il codice:
codice:
#include "Personale.h"
#include <string>
#include <iostream.h>
using namespace std;
int Personale::count_;
Personale::Personale(void)
{
}
Personale::Personale(string nome, string cognome, int stipendio, int eta):
nome_(nome), cognome_(cognome), stipendio_(stipendio), eta_(eta)
{
matricola_ = count_++;
}
Personale::~Personale(void) {};
void Personale::setNome(string nome)
{
nome_ = nome;
}
void Personale::setCognome(string cognome)
{
cognome_ = cognome;
}
void Personale::setEta(int eta)
{
eta_ = eta;
}
void Personale::setStipendio(int stipendio)
{
stipendio_ = stipendio;
}
string Personale::getNome() const
{
return nome_;
}
string Personale::getCognome() const
{
return cognome_;
}
int Personale::getEta() const
{
return eta_;
}
int Personale::getMatricola() const
{
return matricola_;
}
int Personale::getStipendio() const
{
return stipendio_;
}
int Personale::getCount() const
{
return count_;
}
void Personale::stampa()
{
cout << "Personale" << endl;
cout << "Nome:" << nome_.c_str() << "\tCognome:" << cognome_.c_str() << "\tEta':" << eta_
<< "\tStipendio:" << stipendio_ << endl << endl << endl;
}
codice:
#include "Impiegato.h"
#include <string>
#include <iostream.h>
using namespace std;
int Impiegato::count3_;
Impiegato::Impiegato(string nome, string cognome, int stipendio, int eta, int bonus):
Personale(nome,cognome,stipendio,eta)
{
bonus_ = bonus;
count3_++;
}
Impiegato::~Impiegato(void){};
void Impiegato::setStipendio(int ore)
{
stipendio_ = stipendio_ + bonus_;
}
int Impiegato::getCount3() const
{
return count3_;
}
void Impiegato::stampa()
{
cout << "Impiegato" << endl;
cout << "Nome:" << nome_.c_str() << "\tCognome:" << cognome_.c_str() << "\tEta':" << eta_
<< "\tStipendio:" << stipendio_ << "\tBonus:" << bonus_ << endl << endl << endl;
}
e questo è il main
codice:
#include "Personale.h"
#include "Impiegato.h"
#include <iostream.h>
void main()
{
Personale p[];
Personale pe1("Riccardo","Rizzo",2000,25), pe2("Lorenzo","Sciala",1000,24);
Impiegato im1("Lenticchia","Casolino",550,20,50), im2("Alfo","Scialla",1250,19,50);
p[0] = pe1;
p[1] = pe2;
p[2] = im1;
p[3] = im2;
for(int i=0; i<4; i++)
{
p[i].stampa();
}
}