undefined reference to (code block)

undefined reference to (code block) - C++ - Programmation

Marsh Posté le 02-08-2014 à 18:04:41    

Bonjour,
j'ai un projet que je fait pendant mes vacances pour m'amuser et apprendre des choses en même temps mais je me heurte à un problème de compilation :(
Quelqu'un aurait il une idée sur l'origine de cette erreur et si oui comment la résoudre :) merci :)
 
Voila mon erreur de compilation :  
http://img15.hostingpics.net/pics/936477Sanstitre.png
 
headerprojet.h

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. struct position{
  5.     float longitude,latitude;
  6. };
  7. struct ville{
  8.     string nom_ville;
  9.     int departement;
  10.     position position_ville;
  11. };
  12. struct distanse{
  13.     int Km;
  14.     int m;
  15. };
  16. position initialisation_position(float l, float L);
  17. ville initialisation_ville(string nom , int dept , position p1);
  18. bool test_existence_ville(string nom_fichier , string nom);
  19. void enregistrement_ville(string nom_fichier , ville city);
  20. ville lecture_ville(string nom_fichier);
  21. distanse ecart_ville(ville a, ville b);


 
projet.cpp

Code :
  1. #include "headerprojet.h"
  2. position initialisation_position(float l, float L){
  3.     position p1;
  4.     p1.logitude=l;
  5.     p1.latitude=L;
  6.     return p1;
  7. }
  8. ville initialisation_ville(string nom , int dept , position p1){
  9.     ville v1;
  10.     v1.nom_ville=nom;
  11.     v1.departement=dept;
  12.     v1.position_ville=p1;
  13.     return v1;
  14. }
  15. bool test_existence_ville(string nom_fichier , string nom){
  16.     FILE *f;
  17.     ville v;
  18.     int p;
  19.     f=fopen(nom_fichier,"rb" );
  20.     fseek(f,0,SEEK_SET);
  21.     p=fread(&v,sizeof(v),1,f);
  22.     while(p!=0 && v.nom_ville!=nom){
  23.         p=fread(&v,sizeof(v),1,f);
  24.     }
  25.     if(p==0 || v.nom_ville==nom){
  26.         return 1;
  27.     }
  28.     else{
  29.         return 0;
  30.     }
  31. }
  32. void enregistrement_ville(string nom_fichier , ville city){
  33.     FILE *f;
  34.     f=fopen(nom_fichier,"ab" );
  35.     fwrite(&city,sizeof(city),1,f);
  36.     fclose(f);
  37. }


 
main.cpp

Code :
  1. #include "headerprojet.h"
  2. int main()
  3. {
  4.     string nom_fichiers;
  5.     string noms;
  6.     bool test_ville=0;
  7.     int dept;
  8.     position p1;
  9.     ville v;
  10.     cout<<"veuillez entrer un nom de fichier"<<endl;
  11.     cin>>nom_fichiers;
  12.     cout<<nom_fichiers<<endl;
  13.     cout<<"veuillez saisir le nom d'un ville à ajouter "<<endl;
  14.     cin>>noms;
  15.     cout<<"veuillez saisir le departement"<<endl;
  16.     cin>>dept;
  17.     cout<<"veuillez saisir la longitude et latitude de la ville "<<endl;
  18.     cin>>p1.longitude>>p1.latitude;
  19.     test_ville=test_existence_ville(nom_fichiers , noms);
  20.     if(!test_ville){
  21.     //    v=initialisation_ville(noms , dept , p1);
  22.     //    enregistrement_ville(nom_fichiers , v);
  23.     }
  24.     else{
  25.         cout<<"La ville existe déja"<<endl;
  26.     }
  27. }

Reply

Marsh Posté le 02-08-2014 à 18:04:41   

Reply

Marsh Posté le 03-08-2014 à 19:54:10    

Personne ne répond ? Tout les amateurs de C++ seraient-ils partis en vacances sans connexion à HFR ?
 
Bon, je vais me dévouer alors, et dire que c'est du n'importe quoi, ou presque.
 
Notamment,  

Citation :

bool test_existence_ville(string nom_fichier , string nom){
...
    f=fopen(nom_fichier,"rb" );


Sauf erreur, fopen() est du C, pas du C++. On peut l'utiliser dans un code C++ si on le désire parce que le C++ est compatible avec le C. Mais il faut alors au moins respecter le typage des paramètres.
La fonction fopen() (et ses consoeurs, fread(), fwrite(), fprintf(), etc.) ne fonctionne pas avec des string, mais avec des char * (ou des void *), ce qui est très différent.
De plus, pour utiliser ces fonctions C de gestion de fichiers, il faut inclure stdio.h et stdlib.h.
 
Et je pense qu'il y a aussi d'autres erreurs, par exemple la ligne du main.
 
Bref, la compilation de projet.cpp doit donner beaucoup d'erreurs qu'il faut résoudre avant d'espérer que main.cpp puisse se compiler et se linker sans problème.

Reply

Marsh Posté le 04-08-2014 à 09:53:48    

Pareil pour les structs, en C++ on préfère les classes (ça t'évitera des typedef).
(et un return à la fin de ton main)
 
Et pour ton erreur, dans project.cpp :

Code :
  1. bool test_existence_ville(string nom_fichier , string nom)


 
Si tu ne mets pas using namespace il te faut:

Code :
  1. bool test_existence_ville(std::string nom_fichier , std::string nom)


Message édité par Tangrim le 04-08-2014 à 10:21:02

---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator
Reply

Marsh Posté le 06-08-2014 à 13:11:32    

Si ca ne compile pas, c'est parceque le compilateur a détecté une faute d'orthographe :
 

Code :
  1. 19.struct distanse{
  2. 20.
  3. 21.    int Km;
  4. 22.    int m;
  5. 23.
  6. 24.};


 
 :sarcastic:

Reply

Sujets relatifs:

Leave a Replay

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