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

C++ Discussion :

Problème de compilation : référence non définie


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 32
    Points
    32
    Par défaut Problème de compilation : référence non définie
    bonjour,
    mon probleme est le suivant :
    j'ai creé une classe qui permet de creer une fenetre
    voici 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
     
    #ifndef _FAJOUTER_H
    #define _FAJOUTER_H
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <gtk/gtk.h>
     
    // LA CLASSE F_AJOUTER
     
    class F_Ajouter
    {   
     
       public :
       // LES TRAITEMENTS
     
       F_Ajouter();
       ~F_Ajouter();
       void afficherFAjouter();
       void effacerFAjouter();
       void validerFAjouter();
     
       private :
     
       GtkWidget * windowAjouter; // DECLARATION DE LA FENETRE
       GtkWidget * Layout;   // DECLARATION DE LAYOUT
       GtkWidget * Label[3];  // DECLARATION DES LABELS
       GtkWidget * button[2];  // DECLARATION DES BUTTONS
       GtkWidget * entry[2]; //  DECLARATION DES ZONES DE SAISI
    };
    #endif
    j'ai ecri ma fonction main() la fonction main contient un element de menu qui permet de generer un signal :
    dont voici 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
    #include "F_Ajouter.h"
    #include "article.h"
    #include "F_Modifier.h"
    #include "F_Supprimer.h"
     
    #include <stdlib.h>
    #include <iostream>
    #include <gtk/gtk.h>
     
     
     
     
    using namespace std; 
     
    void Quitter(GtkWidget * widget, gpointer data);
    void Aider(GtkWidget * widget, gpointer data);
    void Ajouter(GtkWidget * widget, gpointer data);
    void Modifier(GtkWidget *widget, gpointer data);
    void Lister(GtkWidget *widget, gpointer data);
    void Supprimer(GtkWidget *widget, gpointer data);
    void SeConnecter(GtkWidget *widget, gpointer data);
     
     
    int main(int argc, char **argv)
    {
     
            ..................   
        // $$$$$$$$$$$    sous menu Gestion Article   $$$$$$$$$$$$$//
     
        Menu=gtk_menu_new();
        MenuItem=gtk_menu_item_new_with_mnemonic(" _Ajouter ");
        gtk_menu_shell_append(GTK_MENU_SHELL(Menu),MenuItem);
        g_signal_connect(G_OBJECT(MenuItem),"activate",G_CALLBACK(Ajouter),NULL);
     
      ...................
        gtk_widget_show_all(F_Acceuil);
        gtk_main();
        return EXIT_SUCCESS;
    }
    la fonction de rappel est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void Ajouter(GtkWidget * widget, gpointer data)
    {
         F_Ajouter  win;
        // win=new F_Ajouter();
       //  winAj.F_Ajouter();
     
    }
    il m'affiche l'erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      [Linker error] undefined reference to `F_Ajouter::F_Ajouter()' 
      [Linker error] undefined reference to `F_Ajouter::~F_Ajouter()' 
      ld returned 1 exit status 
     C:\Documents and Settings\pc\Bureau\Article\Makefile.win [Build Error]  [Article.exe] Error 1
    merci de signaler la source d'erreur.??
    je suis un debutant

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Ca ressemble à un pb de C++ plus qu'autre chose... Il a l'air de se plaindre que tu n'as codé ni constructeur ni destructeur pour ta classe alors que tu les as déclarés.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    comment je peux resoudre le probleme donc, je sais que c'est un probleme de c++ plus que celui de gtk+, le code m'apparais correcte??? mais il y a une erreur en quelque part.
    merci pour vos aides.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Points : 444
    Points
    444
    Par défaut
    teuf13 vient de te donner la réponse : tu as déclaré un constructeur et un destructeur, mais tu ne les as pas défini.

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    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
     
    #ifndef _FAJOUTER_H
    #define _FAJOUTER_H
     
    #include <stdio.h> // HORRIBLE
    #include <stdlib.h>
    #include <iostream>
    #include <gtk/gtk.h>
     
    // LA CLASSE F_AJOUTER
     
    class F_Ajouter
    {   
          
       public :
       // LES TRAITEMENTS
                    
       F_Ajouter(); // Déclaré mais pas implémenté
       ~F_Ajouter(); // Déclaré mais pas implémenté
       void afficherFAjouter();
       void effacerFAjouter();
       void validerFAjouter();
       
       private :
              
       GtkWidget * windowAjouter; // DECLARATION DE LA FENETRE
       GtkWidget * Layout;   // DECLARATION DE LAYOUT
       GtkWidget * Label[3];  // DECLARATION DES LABELS
       GtkWidget * button[2];  // DECLARATION DES BUTTONS
       GtkWidget * entry[2]; //  DECLARATION DES ZONES DE SAISI
    };
    #endif
    sera le code qui te donnera un constructeur par défault!

  6. #6
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut
    Vu que tu ne sembles pas avoir d'autre constructeur autre que celui par défaut je te proposes de ne pas le déclarer dans ta classe F_Ajouter.
    Le compilateur t'en fournira un prédéfini et tout fonctionnera nickel

    Idem pour le destructeur.

  7. #7
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Points : 833
    Points
    833
    Par défaut

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,
    Citation Envoyé par befalimpertinent Voir le message
    Vu que tu ne sembles pas avoir d'autre constructeur autre que celui par défaut je te proposes de ne pas le déclarer dans ta classe F_Ajouter.
    Le compilateur t'en fournira un prédéfini et tout fonctionnera nickel

    Idem pour le destructeur.
    Oui ... mais non...

    Si dans l'absolu, tu peux avoir raison, dans la pratique...

    En effet, il sera sans doute nécessaire de faire quelque chose dans le constructeur

    Dans le cas qui intéresse sabrinabest, il s'agira sans doute de définir certaines informations concernant les différents widgets créés dans la classe:
    • Taille, titre et positon de la fenêtre
    • widget parent pour les layouts, labels,boutons et champs texte
    • taille et position pour les layouts, labels,boutons et champs texte
    • texte des boutons et des labels
    • texte par défaut des champs texte
    • ...

    Bien que ne connaissant pas particulièrement wxWidget, je présumes que même en utilisant un fichier ressource, il faut quand même préciser à la classe qu'il faut l'utiliser

    [EDIT]En plus, comme il s'agit de tableaux de pointeurs, il y a sans doute lieu de demander la création et la destruction des différents éléments de manière dynamique...

    La création devrait idéalement se faire dans le constructeur, et la destruction... dans le destructeur

  9. #9
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    C'est GTK, pas WxWidget !



    M'enfin ça change pas grand chose !

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Citation Envoyé par poukill Voir le message
    C'est GTK, pas WxWidget !

    ... Bah, le raisonnement reste valable

    Quand bien même ce serait QT, la VCL ou l'api windows... l'idée resterait identique, même si la mise en pratique peut etre différente

Discussions similaires

  1. Compilation FORTRAN : références non définies
    Par nymformaticien dans le forum Fortran
    Réponses: 2
    Dernier message: 13/10/2011, 14h57
  2. Réponses: 5
    Dernier message: 05/03/2010, 18h49
  3. Problèmes avec FPLOT -> "variables non définies"
    Par covich dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/02/2010, 13h38
  4. WPF - Problème de trigger : Objet non défini
    Par azar121 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 10/04/2009, 18h32
  5. Problème de compilation: Référence indéfinies
    Par richard_sraing dans le forum C++
    Réponses: 4
    Dernier message: 05/07/2007, 10h49

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