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 :

Impossible d'appeler un autre constructeur


Sujet :

C++

  1. #1
    Membre régulier Avatar de Topeur
    Profil pro
    Inscrit en
    Février 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 91
    Points : 78
    Points
    78
    Par défaut Impossible d'appeler un autre constructeur
    Bonjour,

    Je galere depuis ce matin avec un probleme bete comme chou
    j'appelle un constructeur d'une classe dans une autre et j'ai une erreur de symbole externe, sauf que apres verification des liens, cela doit fonctionner

    J'ai 3 fichiers
    interf.cpp -> j'inclus ici le camview.h
    camview.cpp
    camview.h

    J'utilise Visual c++ 2005 pour developper et lorsque je fais un clic droit sur la classe CCamView, que je fasse aller a la definition ou a la declaration, je vais toujours a la declaration de la classe situé dans le .h
    Pourtant, camview.cpp et .h sont dans le meme dossier

    Voici un extrait de mon 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
     
    interf.cpp
     
    // main header
    #include "sourceCam/gui/camview.h"
    // external classes
    class CCamView;
     
    // frame constructor
    MyFrame::MyFrame(const wxString& title)
           : wxFrame((wxFrame *)NULL, wxID_ANY, title)
    {
    	wxPanel* m_pMainPanel = new wxPanel(this, -1, wxPoint(0,0), wxSize(320,240), 0 );
    	CCamView *pCamView = new CCamView( m_pMainPanel, wxPoint(5,15), wxSize(354, 256) );
     
    }
    Quand a la classe camview, elle provient de la page http://larryo.org/work/information/wxopencv/index.html

    Quand a l'erreur la voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	14	error LNK2019: symbole externe non résolu "public: __thiscall CCamView::CCamView(class wxWindow *,class wxPoint const &,class wxSize const &)" (??0CCamView@@QAE@PAVwxWindow@@ABVwxPoint@@ABVwxSize@@@Z) référencé dans la fonction "public: __thiscall MyFrame::MyFrame(class wxString const &)" (??0MyFrame@@QAE@ABVwxString@@@Z)	interf.obj
    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Points : 158
    Points
    158
    Par défaut
    ben deja, je dirais que ca en provient pas de tes include

    le compilo rale car il ne connait pas cette définition
    CCamView::CCamView(class wxWindow *,class wxPoint const &,class wxSize const &)
    va voir dans la classe CCamView si le constructeur existe tel que tu le fais la.

    a mon avis tu aurais la meme erreur avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CCamView   test( m_pMainPanel, wxPoint(5,15), wxSize(354, 256));
    le constructeur doit pas exister

  3. #3
    Membre régulier Avatar de Topeur
    Profil pro
    Inscrit en
    Février 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    Voici une copie d'une partie du constructeur que j'ai dans la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class CCamView : public wxWindow
    {
    public: 
    	CCamView( wxWindow *frame, const wxPoint& pos, const wxSize& size );
    };

    Et voici le code du fichier C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CCamView::CCamView( wxWindow *frame, const wxPoint& pos, const wxSize& size ):
    			wxWindow(frame, -1, pos, size, wxSIMPLE_BORDER )
    {
    	m_pCamera = NULL;
     
    	// set my canvas width/height
    	m_nWidth = size.GetWidth( );
    	m_nHeight = size.GetHeight( );
     
    	m_bDrawing = false;
     
    	m_bNewImage = 0;
    }

    La ou ca m'ennerve c'est que la personne a donné un exemple qui utilise son code et qui fonctionne tres bien. Il appelle ses fonctions de la meme maniere que ce que j'ai ecris.
    Donc est ce que ca pourrait etre une erreur de Visual ?



    EDIT:
    C'etait bien une erreur de Visual et pour une raison encore pire que bete
    Les fichiers existaient mais n'etait pas inclus dans le projet, donc link impossible.
    Tout va bien, c'est juste une demi journée de perdu, arghh

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Topeur Voir le message
    EDIT:
    C'etait bien une erreur de Visual et pour une raison encore pire que bete
    Les fichiers existaient mais n'etait pas inclus dans le projet, donc link impossible.
    Tout va bien, c'est juste une demi journée de perdu, arghh
    Meh.

    Si tu ne lui dis pas d'inclure les fichiers dans le projet, il ne va pas le faire lui même. Ce n'est pas une erreur de Visual, c'est une erreur tout ce qu'il y a de plus humaine
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/08/2006, 21h53
  2. Appel d'un constructeur à partir d'un autre
    Par Pragmateek dans le forum Langage
    Réponses: 28
    Dernier message: 18/06/2006, 01h07
  3. Réponses: 5
    Dernier message: 29/04/2006, 21h41

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