[C/C++]Signification d'une erreur

Signification d'une erreur [C/C++] - C++ - Programmation

Marsh Posté le 23-12-2004 à 12:14:41    

Que signifie les erreurs ci-dessous :??:  
Je travaille sous borlandC++ 5.5.1
Error: Unresolved external 'operator >>(std::basic_istream<char, std::char_traits<char> >&, monome& )
' referenced from D:\MES DOCUMENTS\MES PROGRAMMES EN C++\PROJET INFO\POLYNOME.OBJ
Error: Unresolved external 'operator <<(std::basic_ostream<char, std::char_traits<char> >&, monome)'
 referenced from D:\MES DOCUMENTS\MES PROGRAMMES EN C++\PROJET INFO\POLYNOME.OBJ
 
c'est un projet que je dois réaliser qui concerne les polynomes à n indéterminees. Pour cela j'ai construit la classe monome ainsi que les fonction amis operator<< & operator>>. Puis j'ai construit la classe polynome et j'ai essayé de surcharger les operateurs de flux et c'est lorsque je compile qu'apparait l'erreur cité ci-dessus
 
Merci de votre aide  :p


Message édité par Tango babar le 23-12-2004 à 13:38:42

---------------
Le sourire est une invention britannique. Pour être précis, les Anglais l'ont rapporté de leur campagne japonaise
Reply

Marsh Posté le 23-12-2004 à 12:14:41   

Reply

Marsh Posté le 23-12-2004 à 13:00:28    

 Bonjour,
  Le linker n'a pas pris en compte ta surcharge des opérateurs << et >>. Poste ton code (1/ comment est-ce que tu surcharges 2/ comment est-ce que tu utilises ces opérateurs) pour que l'on puisse t'aider.

Reply

Marsh Posté le 23-12-2004 à 13:16:37    

Je vous prie de m'excuser pour ne pas vous avoir dit bonjour au début de mon message
Voila la surcharge pour la class monome

Code :
  1. ostream& operator<<(ostream& o, monome m ){
  2. if(!m.est_nul()){
  3. o<<m.coef()<<'.';
  4. for(int k=0;k<m.nbv();k++){
  5. o<<'X'<<k+1<<'^'<<m.buffer[k]<<'.';
  6. };};
  7. return o;
  8. };
  9. istream& operator>>(istream& i, monome& m){
  10. cout<<"quel est le coefficient du monome : ";
  11. i>>m.a;
  12. cout<<"quel est le nombre d'indeterminees : ";
  13. i>>m.n;
  14. if(m.n<0 || m.n>MAX_IND){
  15. cout<<"veuillez entrer une valeur comprise entre 0 et "<<MAX_IND<<" : "<<"\n";
  16. i>>m.n;
  17. };
  18. for(int k=0;k<m.n;k++){
  19. cout<<"quel est le degre de votre "<<k+1<<"eme indeterminee : ";
  20. i>>m.buffer[k];
  21.  if(m.buffer[k]<0){
  22.  cout<<"entrez une valeur positive pour le degre : ";
  23.  i>>m.buffer[k];};
  24. };
  25. return i;
  26. };


 
et voici celui pour la classe polynome
//polynome.h

Code :
  1. class polynome{
  2. monome buffer[MAX];
  3. int l;
  4. public:
  5. ...
  6. friend ostream& operator<<(ostream& o, polynome p);
  7. friend istream& operator>>(istream& i, polynome& p);
  8. };


 
//polynome.cpp

Code :
  1. ostream& operator<<(ostream& o, polynome p){
  2. if(!p.est_vide()){
  3. for(int k=0;k<p.longueur()-1;k++){
  4. o<<p.buffer[k]<<"+";
  5. };
  6. o<<p.buffer[p.longueur()-1];
  7. };
  8. return o;
  9. };
  10. istream& operator>>(istream& i, polynome& p){
  11. cout<<"de combien de monome(s) est constitué votre polynome ? ";
  12. i>>p.l;
  13. if(p.l<0 || p.l>MAX){
  14. cout<<"veuillez entrer une valeur comprise entre 0 et "<<MAX<<" : "<<"\n";
  15. i>>p.l;};
  16. for(int k=0;k<p.l;k++){
  17. cout<<"entrez votre "<<k+1<<"eme monome ";
  18. i>>p.buffer[k];};
  19. return i;
  20. };
  21. void main(){
  22. polynome p;
  23. cin>>p;
  24. cout<<p;
  25. };


Je vous remercie d'avance


Message édité par Tango babar le 23-12-2004 à 13:41:00

---------------
Le sourire est une invention britannique. Pour être précis, les Anglais l'ont rapporté de leur campagne japonaise
Reply

Marsh Posté le 23-12-2004 à 13:27:24    

 Avant toutes choses, dépêche toi de mettre ton code entre des balises avant que ça ne rale...
 
1/ édite ton message - cherche l'icône dans cette fenêtre qui se trouve à côté de 'Posté le 23-12-2004 à 13:16:37' -
2/ une fois dans la fenêtre d'édition sélectionne ton code
3/ utilise l'icône C/C++ qui mettra ta sélection entre deux balises.
 
et surtout apprends à INDENTER ton code svp !

Reply

Marsh Posté le 23-12-2004 à 13:39:22    

 Ton code compile correctement (pour le savoir, j'ai tout mis dans un seul fichier et j'ai ajouté des définitions bidon pour les méthodes que tu n'avais pas données).
 
  Mais :
1/ écris int main(void) plutôt que void main(void) et renvoie une valeur qui indique si un problème est apparu ou pas (EXIT_SUCCESS ou EXIT_FAILURE)
2/ ton erreur n'est pas dans ton code mais dans la manière dont tu intégres tes différents fichiers. Est-ce que tu as créé un projet (genre Project -> New ...) et si oui, comment ?

Reply

Marsh Posté le 23-12-2004 à 13:47:39    

Non je n'est pas créer un projet.J'ai juste mis les fichiers
monome.h polynome.h monome.cpp polynome.cpp dans un meme dossier et tous les codes je l'ai fait avec le bloc-note.
 
Dans l'entete de polynome.h, j'ai juste mis  

Code :
  1. #include "monome.h"
  2. #include<iostream.h>


 
et dans celui de polynome.cpp

Code :
  1. #include "polynome.h"


Message édité par Tango babar le 23-12-2004 à 13:48:16

---------------
Le sourire est une invention britannique. Pour être précis, les Anglais l'ont rapporté de leur campagne japonaise
Reply

Marsh Posté le 23-12-2004 à 13:53:21    

 Ok, c'est pour ça que ça ne fonctionne pas !
   
  Il FAUT que tu crées un projet dans lequel tu placeras polynome.cpp et monome.cpp. Ainsi le linker utiliseras ces deux fichiers au lieu de seulement utiliser polynome.cpp comme il l'a fait jusqu'à présent.
  Et puisqu'on en est aux conseils :
  1/ n'écris pas #include <iostream.h> mais #include <iostream>
  2/ place les définitions de polynome dans polynome.cpp/.h et celles de monome dans monome.cpp/.h et crée en plus un autre fichier dans lequel tu placeras ton main. Ton projet auras ainsi trois fichiers différents et sera plus lisible.

Reply

Marsh Posté le 23-12-2004 à 18:58:32    

Je n'ai plus l'erreur de depart. Je dois juste regler la fonction d'affichage.
 
Grand merci à vous suizokukan.


---------------
Le sourire est une invention britannique. Pour être précis, les Anglais l'ont rapporté de leur campagne japonaise
Reply

Sujets relatifs:

Leave a Replay

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