ostream ambigus symbole

ostream ambigus symbole - C++ - Programmation

Marsh Posté le 17-02-2004 à 11:10:52    

J'ai fait la surdéfinition de l'opérateur en flot de sortie mais il me met à la compilation 2x le message:  
 
ostream ambigus symbole.  
 
 
J'ai du faire la surdef à cause de ma fct affiche.
Pourriez vous m'aider.
 
le code :
 

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. #include <list>
  4. using namespace std;
  5. ////////////////////////////
  6. struct bibli
  7. {
  8. int numero;
  9. char *ptr;
  10. friend ostream operator <<(ostream &out, bibli &b)
  11. {
  12.  out<<endl<<"Num : "<<b.numero<<endl;
  13.  return out;
  14. }
  15. };
  16. typedef struct bibli BIBLI;
  17. struct auteur
  18. {
  19. char nom_auteur[32];
  20. char *prem;
  21. char * der;
  22. char *autsuiv;
  23. };
  24. typedef struct auteur AUTEUR;
  25. /////////////////////////////
  26. typedef list<bibli> li;
  27. void affiche(list<bibli> lc)
  28. {
  29. list<bibli>::iterator il ;
  30.     for (il=lc.begin() ; il!=lc.end() ; il++) cout << (*il) << " " ;
  31.     cout << "\n" ;
  32. }
  33. int Code (char *nom)
  34. {
  35. int num=0;
  36.     for (int i=0;i<strlen(nom);i++)
  37.         num=num + nom[i];
  38.     return num;
  39. }
  40. void main()
  41. {
  42. int i=0;
  43. char nom[32];
  44. li l1;
  45. BIBLI *bibli_ptr;
  46. AUTEUR *auteur_ptr;
  47. int num;
  48. while (i!=9)
  49. {
  50.  cout<<"Entrez un nom (9 pour quitter): "<<endl;
  51.  cin>>nom;
  52.  num = Code(nom);
  53.  cout<<"Valeur : "<<num<<endl;
  54.  bibli_ptr = (BIBLI *)malloc(sizeof(BIBLI));
  55.  bibli_ptr->numero = num;
  56.  auteur_ptr = (AUTEUR *)malloc(sizeof(AUTEUR));
  57.  strcpy(auteur_ptr->nom_auteur,nom);
  58.  cout<<"nom = "<<auteur_ptr->nom_auteur<<" :  "<<bibli_ptr->numero<<endl;
  59.  l1.push_back(*bibli_ptr);
  60.  affiche(l1);
  61. }
  62. }

Reply

Marsh Posté le 17-02-2004 à 11:10:52   

Reply

Marsh Posté le 17-02-2004 à 11:17:39    

faut renvoyer une référence, pas une copie :o  
tout a ne doit même pas compiler.
 
 
1) pas en friend, en fonction globale
2) tout ça manque de const
3) pas de typedef C
4) pas de char * -> std::string
5) pas de malloc -> new et new[]
6) <iostream>, <string>
7) int main

Reply

Marsh Posté le 17-02-2004 à 11:22:52    

return &out??
 
 
C'est ce que je viens de faire mais çà ne marche tjr pas

Reply

Marsh Posté le 17-02-2004 à 11:44:06    

d'après toi c'est quoi &out comme type ?

Reply

Marsh Posté le 17-02-2004 à 12:50:51    

La réponse était simplement de tirer les .h dans mes includes

Reply

Marsh Posté le 17-02-2004 à 12:53:57    

zouzouille a écrit :

La réponse était simplement de tirer les .h dans mes includes

bien sur que non
 
 friend ostream operator <<(ostream &out, bibli &b)  
 
 
 friend ostream& operator <<(ostream &out, bibli &b)  
 
 
et prends en compte __tous__ mes conseils

Reply

Marsh Posté le 17-02-2004 à 13:21:04    

ben j'ai tiré pourtant les .h et çà a tres bien été après. merci quand même. Je tiens compte de tes conseils

Reply

Marsh Posté le 17-02-2004 à 16:34:09    

porc coding detected

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed