J'essaye de faire un sujet d'exam, et je me retrouve keblo.
Donc les class vrai,faux et non sont des formules. c ça le sujet j'y peut rien .
le prob ce trouve quand je veux surcharger l'operateur cout << avec les class.
Citation :
main(){
formule* f=new vrai;
cout << *f;
}
|
ca ca marche.
par contre je vois pas comment je peux m'en sortir pour faire ça :
Citation :
main(){
formule* f=new non(new vrai);
cout << *f;}
|
En effet, lorsque j'appelle l'operator << surchargé pour le non, et bien je doit ensuite relancer sur une formule qui est pointée par le champ non::A , sauf que le compilateur veut utilisé l'operateur surchargé de formule. le prob c'est que ça marche pas
une autre idée aurait été de mettre la fonction operator<< de la class formule en virtual, mais ça marche pas.
En fait il retrouve pas automatiquement le type inferieur.
a mon avis personne va capter
Citation :
#include<iostream.h>
class formule
{ };
class vrai : public virtual formule
{
public:
vrai;
friend ostream& operator<<(ostream &os,vrai &ob){return os << "vrai" ; };
};
class faux : public virtual formule
{
public:
faux;
friend ostream& operator<<(ostream &os,faux &ob){return os << "faux" ; };
};
class non : public formule
{
formule* A;
public:
non(formule* X):A(X){};
friend ostream& operator<<(ostream &os,non &ob){return os << "non(" << *ob.A <<" )"; };
};
|
Message édité par karim63 le 02-12-2002 à 00:30:29