Bonjour,
j'utilise le pattern visiteur et je n'arrive pas à débuger toutes les séries d'erreurs !!
pourriez-vous m'aidez s'il vous plait ??
voilà le code:
#include <iostream>
using namespace std;
class Tarif;
class Pourcentage;
class Film {
protected:
float prix;
public:
Film(float f = 0) {
prix = f;
}
float getPrix() {
return prix;
}
virtual float setPourcent(Pourcentage& p) = 0;
};
class Exclusivite : public Film {
Exclusivite(float prix) :
Film(prix) {
}
float setPourcent(Pourcentage& p);
};
class Standard : public Film {
Standard(float prix) :
Film(prix) {
}
float setPourcent(Pourcentage& p);
};
class Reprise : public Film {
Reprise(float prix) :
Film(prix) {
}
float setPourcent(Pourcentage& p);
};
class Pourcentage {
virtual float setPourcent(Exclusivite ex, Pourcentage& p) = 0;
virtual float setPourcent(Standard std, Pourcentage& p) = 0;
virtual float setPourcent(Reprise rep, Pourcentage& p) = 0;
};
class PourcentageGaumont : public Pourcentage {
float setPourcent(Exclusivite ex, Pourcentage& p);
float setPourcent(Standard std, Pourcentage& p);
float setPourcent(Reprise rep, Pourcentage& p);
};
class PourcentagePathe : public Pourcentage {
float setPourcent(Exclusivite ex, Pourcentage& p);
float setPourcent(Standard std, Pourcentage& p);
float setPourcent(Reprise rep, Pourcentage& p);
};
class Client {
protected:
const char* nom;
public:
virtual float prixAPayer(Tarif& price, Film mo) = 0;
};
class Lambda : public Client {
public:
Lambda(const char* name) {
nom = name;
}
float prixAPayer(Tarif& price, Film mo);
};
class Etudiant : public Client {
public:
Etudiant(const char* name) {
nom = name;
}
float prixAPayer(Tarif& price, Film mo);
};
class Enfant : public Client {
public:
Enfant(const char* name) {
nom = name;
}
float prixAPayer(Tarif& price, Film mo);
};
class Senior : public Client {
public:
Senior(const char* name) {
nom = name;
}
float prixAPayer(Tarif& price, Film mo);
};
class Tarif {
public:
virtual float definirPrix(Lambda& lamb, Film) = 0;
virtual float definirPrix(Etudiant& etu, Film) = 0;
virtual float definirPrix(Enfant& lamb, Film) = 0;
virtual float definirPrix(Senior& lamb, Film) = 0;
};
class TarifCourant : public Tarif {
public:
float definirPrix(Lambda& lamb, Film);
float definirPrix(Etudiant& etu, Film);
float definirPrix(Enfant& enf, Film);
float definirPrix(Senior& sen, Film);
};
class TarifVacances : public Tarif {
public:
float definirPrix(Lambda& lamb, Film);
float definirPrix(Etudiant& etu, Film);
float definirPrix(Enfant& enf, Film);
float definirPrix(Senior& sen, Film);
};
float Lambda::prixAPayer(Tarif& price, Film mo) {
return price.definirPrix(*this, mo);
}
float Etudiant::prixAPayer(Tarif& price, Film mo) {
return price.definirPrix(*this, mo);
}
float Enfant::prixAPayer(Tarif& price, Film mo) {
return price.definirPrix(*this, mo);
}
float Senior::prixAPayer(Tarif& price, Film mo) {
return price.definirPrix(*this, mo);
}
float TarifCourant::definirPrix(Lambda& lamb, Film mov) {
return 8;
}
float TarifCourant::definirPrix(Etudiant& etu, Film mov) {
return 0, 25*mov.getPrix();
}
float TarifCourant::definirPrix(Enfant& enf, Film mov) {
return 5;
}
float TarifCourant::definirPrix(Senior& sen, Film mov) {
return 0, 5*mov.getPrix();
}
float TarifVacances::definirPrix(Lambda& lamb, Film mov) {
return 7;
}
float TarifVacances::definirPrix(Etudiant& etu, Film mov) {
return 0, 20*mov.getPrix();
}
float TarifVacances::definirPrix(Enfant& enf, Film mov) {
return 4;
}
float TarifVacances::definirPrix(Senior& sen, Film mov) {
return 0, 7*mov.getPrix();
}
int main(int argc, char* argv[]) {
Film mov(12);
Tarif* t = new TarifVacances();
Lambda lam("Splint X");
cout << lam.prixAPayer(*t, mov) <<endl;
}
Merci d'avance j'en ai vraiment besoin ... c'est urgent !!
Connaître les autres, c’est sagesse. Se connaître soi-même, c’est sagesse supérieure. - Imposer sa volonté aux autres, c’est force. Se l’imposer à soi-même, c’est force supérieure.