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 :

Passer un objet en argument


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut Passer un objet en argument
    Bonjour,
    je débute en c++, mon probléme est le suivant :

    MonTimer.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /*
    ...
    */
    #include "MonObjet.h"
    /*
    ...
    */
    void MonTimer::Start(MonObjet* objet,double time, double id, double time_entre)
    /*
    ...
    */
    Ici le compilateur ne reconnait pas MonObjet bien que j'ai inclut la définition, de ce dernier.

    Merci.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Tu as une double "," après "double id"

    Si ton compilateur ne reconnait pas MonObjet, c'est que le header qui le définit n'est pas inclus ou alors que l'orthographe de "MonObjet" n'est pas correcte.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Tu as une double "," après "double id"

    Si ton compilateur ne reconnait pas MonObjet, c'est que le header qui le définit n'est pas inclus ou alors que l'orthographe de "MonObjet" n'est pas correcte.
    Le double "," c'est une faute de frappe en recopiant le code , mais sinon mon header contient bien la déclaration de ma classe, la définition étant dans MonObjet.cpp.

    ça ne peut pas être une histoire de namespace??

    Merci.

  4. #4
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Est-ce que le prototype de la définition de la fonction est le même que celui de sa déclaration?
    Peux tu poster la déclaration de la classe?

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Voici une partie de la déclaration :
    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 MonObjet : public SuperClasse
    {
    public:
     
        class fofo
        {
        public:
            // Constructeur de la structure (valeurs par defaut)
            inline fofo() : parameter(NULL)
            {
            }
     
        public:
            // Membres publiques (fonctionne comme une structure)
           MyParameter* parameter_j;
        };
    /*
    ...
    */

  6. #6
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Je n'ai pas précisé que je parlais de la définition de la classe MonTimer .
    Est-ce la seule erreur que tu as?

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    BiduleEvent.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
    24
    25
    26
    27
     
    class MonTimer : TimerEvent
    {
    public:
    	MonTimer();
    	virtual ~MonTimer();
    /*.
    ...
    */
          void Start(MonObjet* objet,double time, double id, double time_entre);	
     
    /*
    ...
    */
     
        virtual std::string Name() {return "MonTimer";}
     
    private:
       MonObjet* objet;
       double time,
       double id;
      double time_entre;
     
    	/*
    ...
    */
    };
    Les erreurs :

    BiduleEvent.cpp :
    `void MonTimer::Start(MonObjet* objet,double time, double id, double time_entre)' does not match any in class `MonTimer'
    BiduleEvent.h :

    MonObjet was not declared in this scope

  8. #8
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Là, comme ça,, rien ne me choque, ça me semble correct..
    Soit c'est une erreur très très vicieuse, soit elle est provoquée par du code qui n'est pas montré (c'est pourquoi je te demandais si tu avais d'autres erreurs).
    As-tu essayé de nettoyer et de regénérer ta solution (mais j'y crois pas trop...) ?

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    MonObjet was not declared in this scope
    Cela ne suffit-il pas à tout expliquer ? Il y a une erreur sur la ligne de ta déclaration de fonction membre: La déclaration ne passe donc pas...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    screetch
    Invité(e)
    Par défaut
    La declaration aussi doit connaitre "MonObjet". Il faut soit que tu le predeclares (dans le meme namespace et tout) soit que tu inclues "monobjet.h" aussi

  11. #11
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    En incluant monobjet.h dans la déclaration de mon timer...
    le compilateur affiche des erreurs dans monobjet.h

    exemple:

    monobjet.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     class MonObjet: public SuperClasse
    {
     
    public:
     
     inline double GetMyStatus(){return status;};
    //ici le compilateur me dit qu'il ne connait pas status
     
    private :
     
    double status;
    //ici il me dit used prior declaration.

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Juste dire au début de BiduleEvent.h devrait suffire...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par screetch Voir le message
    soit que tu inclues "monobjet.h" aussi
    Forcément
    Citation Envoyé par java-mobile
    le compilateur affiche des erreurs dans monobjet.h
    Il faut que status soit déclaré avant la fonction GetMyStatus() de la classe. Car au moment de la déclaration de cette fonction, status n'existe pas.

  14. #14
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Citation Envoyé par Spout Voir le message
    Forcément Il faut que status soit déclaré avant la fonction GetMyStatus() de la classe. Car au moment de la déclaration de cette fonction, status n'existe pas.
    c'est le cas status est en private .
    et GetMyStatus en public.

  15. #15
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Juste dire au début de BiduleEvent.h devrait suffire...
    ceci semble être une piste j'ai plus les mêmes erreurs...mais il y on'a toujours.

  16. #16
    screetch
    Invité(e)
    Par défaut
    Citation Envoyé par Spout Voir le message
    Forcément Il faut que status soit déclaré avant la fonction GetMyStatus() de la classe. Car au moment de la déclaration de cette fonction, status n'existe pas.
    euh non je ne pense pas.
    je pense que tu devrais poster ici l'integralité du fichier monobjet.h et aussi l'integralité du message du compilateur; quelquefois tu crois que c'est pas important et c'est ca le probleme

  17. #17
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par screetch Voir le message
    euh non je ne pense pas.
    J'ai déjà eu le cas avec VS2005. Je mettrais pas ma main à couper que le contexte est identique, mais j'ai déjà eu besoin de faire ça.
    Citation Envoyé par screetch Voir le message
    je pense que tu devrais poster ici l'integralité du fichier monobjet.h et aussi l'integralité du message du compilateur; quelquefois tu crois que c'est pas important et c'est ca le probleme
    +1. D'où ma question si c'étaient les seules erreurs.

  18. #18
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Juste dire au début de BiduleEvent.h devrait suffire...
    Effectivement c'est bien la solution il fallait que j'enléve l'include MonObjet.h et ajouter class MonObjet; .

    Merci à tous pour votre aide.

  19. #19
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Si quelqu'un peut nous expliquer l'utilité de

    l'équivalent en Java " package"??

  20. #20
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est juste pour dire que "MonObjet" n'est plus un identificateur non-déclaré, mais un nom de classe.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. passer un objet en tant qu'argument dans la ligne de commande
    Par skoobi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2014, 22h42
  2. Passer un objet en argument d'une servlet
    Par julien1311 dans le forum Servlets/JSP
    Réponses: 16
    Dernier message: 06/08/2007, 16h30
  3. [variadic] passer un objet en argument variable
    Par Spartan03 dans le forum C++
    Réponses: 3
    Dernier message: 30/04/2006, 11h31
  4. [POO] Passer un objet HTML en argument.
    Par defacta dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2004, 10h44
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

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