Bonjour,
j'ai une classe Personne :
Personne.hh :
#ifndef PERSONNE_HH
#define PERSONNE_HH
#include "Plage.hh"
class Personne{
protected:
int indice_colonne;
int heure_arrivee;
int heure_depart;
public:
Personne(int indice_colonne, int heure_arrivee, int heure_depart);
void emplacement(Plage & plage);
int getColonne();
int getArrivee();
int getDepart();
};
#endif
Personne.cc
#include <iostream>
#include "Personne.hh"
#include "Plage.hh"
Personne::Personne(int indice_colonne, int heure_arrivee, int heure_depart ){
if(indice_colonne < 0 || indice_colonne >= NBCOLONNES)
printf("indice de colonne incorrecte\n");
if(heure_arrivee < 0 || heure_arrivee > 24 || heure_depart < 0 || heure_depart > 24)
printf("heure incorrecte\n");
this->indice_colonne = indice_colonne;
this->heure_arrivee = heure_arrivee;
this->heure_depart = heure_depart;
}
void Personne::emplacement(Plage & plage){
int ligne = plage.hasard(0,NBLIGNES-1);
int colonne = plage.hasard(0,NBCOLONNES-1);
plage.inserer(ligne,colonne);
}
int Personne::getColonne(){
return indice_colonne;
}
int Personne::getArrivee(){
return heure_arrivee;
}
int Personne::getDepart(){
return heure_depart;
}
et une autre classe Glacier qui hérite de Personne :
Glacier.hh :
#ifndef GLACIER_HH
#define GLACIER_HH
#include "Personne.hh"
class Glacier:public Personne{
private:
int indice_ligne;
public:
Glacier(int indice_colonne, int heure_arrivee, int heure_depart);
int getLigne();
void affiche();
};
#endif
Glacier.cc :
#include <stdlib.h>
#include <iostream>
#include "Glacier.hh"
#include "Personne.hh"
Glacier::Glacier(int indice_colonne, int heure_arrivee, int heure_depart){
Personne(indice_colonne, heure_arrivee, heure_depart);
}
int Glacier::getLigne(){
return indice_ligne;
}
void Glacier::affiche(){
printf("le glacier est a la case %,%\n",getLigne(), getColonne());
printf("Arrivee : %d, Depart : %d\n", getArrivee(), getDepart());
}
int main(){
Glacier g(3, 8, 18);
g.affiche();
return 0;
}
A la compilation, j'obtiens toutes ces erreurs que je ne comprends pas.
Je débute en C++ :
Glacier.cc: Dans constructor « Glacier::Glacier(int, int, int) »:
Glacier.cc:7: error: no matching function for call to `Personne::Personne()'
Personne.hh:6: error: candidates are: Personne::Personne(const Personne&)
Personne.hh:13: error: Personne::Personne(int, int, int)
Pourriez-vous m'indiquer comment corriger cela et m'indiquer comment s'utilise les exceptions car je ne saisis pas très bien.
Par exemple dans le constructeur Personne, j'aimerai lever une exception au lieu de mettre les printf
Merci
