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

Langage C++ Discussion :

passer en parametre un objet d'une autre classe


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut passer en parametre un objet d'une autre classe
    bonjour,

    J'ai un souci de paramétrage, je ne sais pas comment initialiser le constructeur d'une classe prenant en argument un objet d'une autre classe.

    mon problème je l'ai au niveau de la classe FigGeomLog , j'ai initialisé le constructeur pas copie et apparament c'est pas comme ca .

    je ne fais pas d'héritage.

    Voila le corps de mes deux classes.

    la classe CFichLog

    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 CFichLog 
    {
     
     const char* nom;
     
    public:
     
        CFichLog();
     
        CFichLog( const char* _nom):nom(_nom)
     
    	{ const char* nom=NULL;}
     
    	CFichLog( const CFichLog & fichier):nom(fichier.nom)
    	{}
     
    	~CFichLog()
    	{}
     
    	const char* Getnom()  { return nom;};



    la classe FigGeomLog qui va prendre en argument un objet de type FichLog ,et c'est là où j'ai le souci



    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
     
     
     
    #include "FichLog.h"
     
     
    class FigGeomLog
     
    {
     
     
      unsigned int nbs;
      DWORD color;
     
     
    FigGeomLog(){}
     
    FigGeomLog(unsigned int _nbs, DWORD _color=0x000000,const CFichLog& fichier): nbs(_nbs),color(_color),fichier(fichier.Getnom)
      {
       }
     
      }
    message d'erreur :

    c:\documents and settings\administrateur\bureau\tp_man\fichlog\figgeomlog.h(26) : error C2548: 'FigGeomLog::FigGeomLog' : missing default parameter for parameter 3



    merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Tous les paramètres qui ont des valeurs par défaut doivent être sur la droite.
    Inverse les deux paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FigGeomLog(unsigned int _nbs,const CFichLog& fichier, DWORD _color=0x000000) .....
    Bon courage,
    MAT.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    Merci pour ta réponse MAT.

    j'ai inversé les parametres comme tu me l'as suggéré , je n'ai pas l'ancien erreur mais il ya un autre message d'erreur qui apparait :

    error C2614: 'FigGeomLog' : illegal member initialization: 'fichier' is not a base or member

    je pense que j'initialise pas comme il faut mon constructeur. je sais pas si la notation suivante est valide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FigGeomLog(unsigned int _nbs,const CFichLog& fichier, DWORD _color=0x000000,): nbs(_nbs), fichier(fichier.Getnom), color(_color)

    merci en tt cas ton message m'a bien aidé.



    Citation Envoyé par Mat007 Voir le message
    Salut,

    Tous les paramètres qui ont des valeurs par défaut doivent être sur la droite.
    Inverse les deux paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FigGeomLog(unsigned int _nbs,const CFichLog& fichier, DWORD _color=0x000000) .....
    Bon courage,
    MAT.

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Le compilateur est très clair, il dit que ta classe FichGeomLog n'a pas de variable membre nommée 'fichier'. Hors, dans ta liste d'initialisation tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier( fichier.Getnom)
    Et dans ce fragment de code il y a une autre erreur : tu utilises une fonction (Getnom) mais tu ne mets pas les parenthèses qui la caractérisent en tant que fonction : '()'.
    Une autre erreur, mais dans ta classe CFichLog, tu écris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        CFichLog( const char* _nom):nom(_nom)
     
    	{ const char* nom=NULL;}
    Quelle est l'utilité dans ce constructeur de créer une variable locale 'nom', de l'initialiser à NULL et de sortir de la fonction ? Il n'y en a pas. Si tu cherches à initialiser ta variable membre 'nom', tu l'as fait dans la liste d'initialisation : nom( _nom).

    Et enfin, je vois que tu utilises un char * pour stocker une chaîne de caractères. Vu que tu développes en C++ utilise plutôt les std::string (disponibles en faisant un simple #include <string>) pour éviter les fuites de mémoires et d'autres problèmes ...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. fonction qui renvoie un un objet d'une autre classe
    Par miloon dans le forum Débuter
    Réponses: 3
    Dernier message: 16/02/2009, 20h45
  2. Accés objet d'une autre classe
    Par lejeanbon dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 04/05/2008, 15h59
  3. Réponses: 6
    Dernier message: 05/11/2007, 14h51
  4. Réponses: 1
    Dernier message: 16/08/2007, 18h34
  5. Réponses: 2
    Dernier message: 01/06/2007, 08h57

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