IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Undefined reference to 'MaFenetre::MaFenetre'

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2018
    Messages : 30
    Points : 14
    Points
    14
    Par défaut Undefined reference to 'MaFenetre::MaFenetre'
    onjour a tous ,

    je travaille sur un projet sous QT ; je dois lire les contenues d'un fichier qui seront les données d'une autre fonction, j'ai la fonction qui s'occupe de lire le contenue de fichier lorsque je le teste seul il fonctionne bien , voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <fstream>
    *
    using namespace std;
    *
    struct point
    {
    double x;
    double y;
    double z;
    };
    *
    vector<point> readingData(string inputFileName)
    {
     vector<point> inputData;
    string line, token;
    point newPoint;
    ifstream file;
    file.open(inputFileName.c_str(), ifstream::in);
    if (file.is_open())
    {
    while (getline(file, line))
    {
    istringstream ss(line);
    getline(ss, token, ',');
    newPoint.x = stod(token);
    getline(ss, token, ',');
    newPoint.y = stod(token);
    getline(ss, token, ',');
    newPoint.z = stod(token);
    inputData->push_back(newPoint);
    }
    return inputData;
    }
    else
    cout << "Unable to open file";
    file.close();
    }
    int main()
    {
    vector<point> inputData;
     
    readingData("test.txt");
     
    for (int i = 0; i < inputData.size(); i++)
    {
    cout << inputData.at(i).x << "* " << inputData.at(i).y << "* " << inputData.at(i).z << endl;
    }
    system("pause");
     
    return 0;
     
    }
    mon projet c'est une interface graphique , donc je dois ajouter ce code au sein de programme de la conception de l'interface ; je le fais comme ceci :

    fichier.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public :
       vector<point> readingData(string inputFileName, vector<point>* inputData);

    j'ai recopie la fonctionne ds le fichier .cpp dehors la classe MaFenetre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    vector<point> readingData(string inputFileName) {
           vector<point> inputData ; 
          string line, token;
          point newPoint;
          ifstream file;
          file.open(inputFileName.c_str(), ifstream::in);
          if (file.is_open())
          {
              while (getline(file, line))
              {
                  istringstream ss(line);
                  getline(ss, token, ',');
                  newPoint.x = stod(token);
                  //  getline(ss, token, ',');
                  newPoint.y = stod(token);
                  // getline(ss, token, ',');
                  newPoint.z = stod(token);
                  inputData->push_back(newPoint);
              }
              return inputData ;
     
          }
          else
              cout << "Unable to open file";
          file.close();
      }
    et a l'interieur de la classe MaFenetre je fais appelle a la fonction pour recopier le fichier dans une autre fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    QScatter3DSeries *series = new QScatter3DSeries(graph);
       vector<point> inputData = MaFenetre::readingData("text.txt");
       QScatterDataArray data;
    for (int i=0; i<inputData.size();i++)
    {data.push_back(QScatterDataItem(QVector3D(inputData[0],inputData[1],inputData[2])));
     
    }
     
     series->dataProxy()->addItems(data);
      graph->addSeries(series);
    et lorsque je compile j'ai le message d'erreur suivant :

    Nom : 16.PNG
Affichages : 132
Taille : 12,9 Ko

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    1- peux-tu, s'il te plait, rempalcer les * que tu as mis pour figurer des espaces par... des espaces. La balise code les affiche correctement

    2- de manière générale, tu dois corriger les erreurs dans l'ordre dans lequel elles sont données, de la première à la dernière : il arrive régulièrement que le compilateur "perde le fil" lorsqu'il est confronté à une erreur et que, du coup, il t'indique toute une série de problèmes qui n'existent pas

    3- Une grande partie du code que tu nous présente n'a rien à voir ni avec le titre de ton message, ni avec l'image que tu montre de l'erreur... Ca va pas être évident de s'y retrouver

    4- les erreur de type "undefined reference to " sont des erreurs émises par l'éditeur de lien parce qu'il ne trouve pas le code binaire d'une fonction qui est appelée par ailleurs. S'il s'agit d'une qui est déclarée dans un de tes propres fichiers (par exemple dans la classe MaFenetre que tu déclares toi-même), c'est sans doute parce que le fichier .cpp qui contient cette fonction n'a pas été compilé. Il faut s'assurer qu'il apparait dans la liste des source de ton fichier .pro

    Si l'erreur a trait à une fonction issue d'une bibliothèque externe, c'est sans doute parce que tu n'as pas indiqué à l'éditeur de liens qu'il devait aller voir dans la bibliothèque en question s'il n'y trouvait pas les fonctions dont il a besoin

    5- l'image que tu nous montre indique que c'est une erreur de compilation lors de la tentative de compilation du constructeur MaFenetre::MaFenetre(). Il se plaint de ne pas pouvoir effectuer de conversion correcte au niveau d'un QVector3D.

    Comme cette classe est fournie par Qt, on peut partir du principe qu'elle fonctionne correctement. Tu dois donc descendre dans la liste des erreurs jusqu'à en trouver une qui parle de ton fichier à toi (MaFenetre.cpp ) histoire de savoir où le problème apparaît.

    Quoi qu'il en soit, tu devra corriger ton code du constructeur de MaFenetre. Du coup, si tu pouvais nous filer la définition de cette classe ainsi que le code de ce constructeur, nous pourrions sans doute t'aider bien plus précisément
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2018
    Messages : 30
    Points : 14
    Points
    14
    Par défaut
    j'ai fait quelques modifications mais toujours j'ai la meme message d'erreur qui lie a QVector3D , et pour les fichier .h et .cpp sont tous inclure dans le fichier .pro

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Undefined reference compilation réseau
    Par Ren97 dans le forum Dev-C++
    Réponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo