|
|
|
|
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
#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;
}
#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
#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;
}
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)
Il faut simplement créer un constructeur par défaut pour la classe Personne (utilisé dans glacier.cc ligne 7)
Personne(){}
Mais en fait je pense que tu n'as pas écrit ce que tu voulais à cet endroit ce n'est pas plutôt : Glacier::Glacier(int indice_colonne, int heure_arrivee, int heure_depart)
: Personne(indice_colonne, heure_arrivee, heure_depart)
{}
Pour les exceptions c'est simple il suffit d'inclure le header stdexcept et de lancer une exception, éventuellement rattrapée par un bloc try, catch. Mais tu peux aussi utiliser les assertions.
#include <stdexcept>
#include <cassert>
void f(int x){
if(x<0) throw std::runtime_error("excection");
}
void g(int x){
assert(x>=0); // bloque si x<0
}
Moi ce que j'aime bien dans les assertions c'est que tu peux les ignorer à la compilation (attention donc à ne mettre que des tests qui ne modifient pas de variable) pour accélérer le programme une fois la phase de debug terminée. Bonne chance |