no save
Assistance
Achat
News

Forum | programmation
[C++]Appel des méthodes avec l'héritage
max, le ven. 23 févr. 2007 à 15:31:31
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
Version Web
Réalisé par RedShift
no save