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 :

[debutant]serie de pb a la compilation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut [debutant]serie de pb a la compilation
    bonjours, ca fait un (long) moment que je cherche a faire fonctionner les sockets de wxwidgets...

    j'ai créé plein de projets, ils fonctionnent au debut, mais des que je commence a créer une classe dans le but sd'utiliser les socket (des que j'ai finit mon interface quoi)...
    bein c'est la panade totale...

    donc, si vous le voulez bien, j'aimerait vous soumettre un a un les pb que j'ai a la compilation, parceque la, j'en ait... MARRE!!

    (dsl)
    1er pb :
    expected class-name before '{' token
    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
    class MyClientTCP : public wxClient
    {
    	public:
    		// class constructor
    		MyClientTCP();
    		// class destructor
    		~MyClientTCP();
    		// No description
    		void connect();
    		// No description
            // initialisation du client
    		void init(vncFinalFrm *myFrame);
    	private:
    		// No description
    		wxSocketClient  *socketTCP;
            vncFinalFrm *parentFrame;
    	private:
    		// No description
    		wxSocketClient *socketUDP;
     
     
    };

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Le message d'erreur semble clair : le compilateur ne reconnait pas les déclarations des classes ;
    ici on déclare une classe héritant des membres de wxClient.
    wxClient pour le compilateur n'est pas reconnue ; donc probléme de fichiers d'include de fichiers lib....
    Véifier les chemins d'acès
    Avant de faire un projet important faire un petit projet et avancer par tatonnements

  3. #3
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    pourtant, j'essaie de m'inspirer d'un fichier d'exemple fournit, et le seul includes qu'ils font, c'est
    include que je fait aussi...

    mais, merci, je pensait que c'etait pas ce genre d'erreure...

  4. #4
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    milles excuses et grosse erreure de ma part

    =>

    #include <wx/ipc.h>

    tel est ce qu'il fallait ecrire!
    Merci bien que cela te semble peut, tu m'a enormement aidé!!

  5. #5
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    je passe odnc a ma seconde erreure de compilation :
    variable or field `init' declared void
    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
    class MyClientTCP : public wxClient
    {
    	public:
    		// class constructor
    		MyClientTCP();
    		// class destructor
    		~MyClientTCP();
    		// No description
    		void connect();
    		// No description
            // initialisation du client ERREURE ICI =>
    		void init(vncFinalFrm *myFrame);
    	private:
    		// No description
    		wxSocketClient  *socketTCP;
            vncFinalFrm *parentFrame;
    	private:
    		// No description
    		wxSocketClient *socketUDP;	
    };

  6. #6
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    si je met juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // initialisation du client ERREURE ICI => 
          void init(vncFinalFrm *myFrame);
    ca ne me met pas d'erreure de compil... mais je suis pas sur que ce soit juste...

    bon, je vait faire un tour a la FAQ (dsl, je sait que la plupart de mes pb se resolvent peut etre grace a elle, masi je pete vraiùment un plomb la :'( )

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Init est peut-être une méthode de la classe de base déja définie.
    Utiliser le mot clé "virtual" le cas échéant pour redéfinir la méthode.

  8. #8
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    ATETNTION, une fois que j'ai eu finit de tout rediger, j'ai fait un resumé simple en bas...


    dans mon fichier principal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class vncFinalFrm : public wxFrame
    {
    private:
        DECLARE_EVENT_TABLE()
    public:
        vncFinalFrm( wxWindow *parent, wxWindowID id = 1, const wxString 
    ...
    public:
        MyClientTCP *myClientTCP;
    je declare un objet d'un type que je definit dans "myclienttcp.cpp".
    ca me genere donc une erreure...
    je fait donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "myclienttcp.cpp"
    au debut de cette page...
    l'erreure de compilation saute...

    cependant, je me retrouve confronté a un autre pb :

    dans ma methode initialisation, je doit affecter un "event handler" a cette classe... je procede comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void MyClientTCP::initialise(vncFinalFrm *myFrame)
    {
    	/* TODO (#1#): Implement MyClientTCP::init() */
        //on instnacie la socket
     
        socketTCP = new wxSocketClient();//je psecialiserait surement la classe...
        socketTCP->SetEventHandler(*myFrame, ID_SOCKETTCP);
    a la derniere ligne, je definit donc un gestionnaire d'evenements, dont la classe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class vncFinalFrm : public wxFrame
    et la, je me retrouve cnofronté a un nouveau pb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class MyClientTCP : public wxClient
    {
    	private:
    		// No description
    		wxSocketClient  *socketTCP;
            vncFinalFrm *parentFrame = NULL;
    ISO C++ forbids declaration of `vncFinalFrm' with no type
    alors que le type de cet objet est justement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class vncFinalFrm : public wxFrame
    et cette n'a pas encore ete definie!!

    -=-=-=-=-= RESUME! -=-=-=-=-=-=-=
    donc mon pb est le suivant :
    fichier 1 => j'ai besoin de la definition de la classe du fichier 2
    fichier 2 => j'ai besoin de la definition de la classe du fichier 1

    et donc ca me genere une erreure de compilation...
    dans chaqune des classe, je declare un objet membre du type de l'autre classe...

  9. #9
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    bon, j'ai eu un eclair de genie!
    je me suis dit
    mais c'est donc a ca que ca sert de separer les fichiers.h des .cpp???
    donc j'ai courut!
    et j'ai inckut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "vncFinalFrm.h"
    et j'ai ete vaincu...

    ca n'a po marché ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "vncFinalFrm.h"
    ...
    class MyClientTCP : public wxClient
    {
    	public:
    ...
            vncFinalFrm *parentFrame = NULL;
    ...
    ISO C++ forbids declaration of `vncFinalFrm' with no type

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  11. #11
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    MERCI

    grace a vous, j'ai putr passer ces pb insurmaontable seul (vi vi)

    veuillez excuser mon manque de connaissance, en tout cas, je vous suis tres reconnaissant de votre grande tolerance

    merci

  12. #12
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    [bibliotheque : wxwidgets]
    dsl, j'ai un nouveau pb qui n'etait pas la auparavant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN_EVENT_TABLE(vncFinalFrm,wxFrame)
    	////le pb se situe juste a la ligne en dessous
        EVT_SOCKET(ID_SOCKETTCP,  MyClientTCP::OnClientEvent)
     
    	EVT_CLOSE(vncFinalFrm::vncFinalFrmClose)
    	EVT_BUTTON(ID_WXBUTTON6,vncFinalFrm::WxButton6Click)
    ...
    END_EVENT_TABLE()
    invalid static_cast from type `void (MyClientTCP::*)(wxSocketEvent&)' to type `void (wxEvtHandler::*)(wxSocketEvent&)'
    de plus, il ne reconniat pas non plus les events suivants :
    `vncFinalFrmClose' is not a member of `vncFinalFrm'
    `ID_WXBUTTON6' was not declared in this scope
    ...
    alors que ma classe est definie dans le fichier .h qui est bien inclut juste avant...

  13. #13
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut
    Citation Envoyé par hansaplast
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN_EVENT_TABLE(vncFinalFrm,wxFrame)
    	////le pb se situe juste a la ligne en dessous
        EVT_SOCKET(ID_SOCKETTCP,  MyClientTCP::OnClientEvent)
     
    	EVT_CLOSE(vncFinalFrm::vncFinalFrmClose)
    	EVT_BUTTON(ID_WXBUTTON6,vncFinalFrm::WxButton6Click)
    ...
    END_EVENT_TABLE()
    Salut !!!

    Il faut déclarer deux tables d'évenements, une pour chaque classe (une pour la classe vncFinalFrm et une pour la classe MyClientTCP.

    Marco85

  14. #14
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    oki, j'ai suivait tes conseils

    par contre, je declare mal ma nouvelle table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BEGIN_EVENT_TABLE(MyClientTCP,wxClient)
        EVT_SOCKET(ID_SOCKETTCP,	MyClientTCP::OnClientEvent)
    END_EVENT_TABLE()
    pour les deux parametre, je procede comme suit :

    premier parametre, le nom de la classe derivée de wxClient
    second parametre : wxClient...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MyClientTCP : public wxClient
    {
    	public:
    		// class constructor
    		MyClientTCP();
    et ca me genere cela :


    `sm_eventTable' is not a member of `wxDDEClient'
    invalid static_cast from type `void (MyClientTCP::*)(wxSocketEvent&)' to type `void (wxEvtHandler::*)(wxSocketEvent&)'
    ...

  15. #15
    Membre confirmé Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Par défaut
    Citation Envoyé par hansaplast
    `sm_eventTable' is not a member of `wxDDEClient'
    invalid static_cast from type `void (MyClientTCP::*)(wxSocketEvent&)' to type `void (wxEvtHandler::*)(wxSocketEvent&)'
    ...
    Est-ce que tu peux me montrer la ligne qui génère cette erreur ? sm_eventTable est-il bien déclaré à l'intérieur de ta classe ?

    Marco85

  16. #16
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BEGIN_EVENT_TABLE(MyClientTCP,wxClient)
    c'est cette ligne la qui est coupable!
    `sm_eventTable' is not a member of `wxDDEClient'
    la suivante me fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        EVT_SOCKET(ID_SOCKETTCP,	MyClientTCP::OnClientEvent)
    invalid static_cast from type `void (MyClientTCP::*)(wxSocketEvent&)' to type `void (wxEvtHandler::*)(wxSocketEvent&)'

    et mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        socketTCP->SetEventHandler(this, ID_SOCKETTCP);
    me provoque :
    no matching function for call to `wxSocketClient::SetEventHandler(MyClientTCP* const, MyClientTCP::<anonymous enum>)'
    note candidates are: void wxSocketBase::SetEventHandler(wxEvtHandler&, int)
    avec une vision globale :
    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
    #include "myclienttcp.h" // class's header file
    #include "wx/socket.h"
    #include <wx/wx.h> 
     
     
     
    BEGIN_EVENT_TABLE(MyClientTCP,wxClient)
        EVT_SOCKET(ID_SOCKETTCP,	MyClientTCP::OnClientEvent)
    END_EVENT_TABLE()
     
     
    // initialisation du client
    void MyClientTCP::initialise()
    {
    	/* TODO (#1#): Implement MyClientTCP::init() */
        //on instnacie la socket
     
        socketTCP = new wxSocketClient();//je psecialiserait surement la classe...
        socketTCP->SetEventHandler(this, ID_SOCKETTCP);
    ...
    et le fichier .h :
    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
    class MyClientTCP : public wxClient
    {
    	public:
    		// class constructor
    		MyClientTCP();
    		// class destructor
    		~MyClientTCP();
    		// No description
    		bool connect();
    		// No description
            // initialisation du client
    		void initialise();
            void MyClientTCP::OnClientEvent(wxSocketEvent& event);
            enum {ID_SOCKETTCP = 8000};
    	private:
    		// No description
    		wxSocketClient  *socketTCP;
    	private:
    		// No description
    		wxSocketClient *socketUDP;
            wxIPV4address addrTCP;
            DECLARE_EVENT_TABLE()
    };

  17. #17
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    la solution est de ne pas créer de classe pour les socket, et de les laisser dans la classe wxframe...

    comme ca, aucun pb de gestionnaire d'evenement...

    c'etait si simple :'(

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Debutant : les tests ne sont pas compilés
    Par jdvacheron dans le forum Maven
    Réponses: 1
    Dernier message: 03/07/2007, 17h19
  2. [DEBUTANT][VSC++ 6.0]probleme de compilation
    Par magnus2005 dans le forum Visual C++
    Réponses: 6
    Dernier message: 27/02/2007, 09h01
  3. Debutant > modifier code d'un programme compilé
    Par reg11 dans le forum Débuter
    Réponses: 13
    Dernier message: 04/11/2006, 20h06
  4. Réponses: 2
    Dernier message: 06/03/2006, 11h22
  5. [Debutant GCC sur Solaris]Erreur de compilation
    Par xxaragornxx dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/01/2006, 17h29

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