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