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 :

Probleme a initialiser un objet.


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut Probleme a initialiser un objet.
    Je n'arrive pas à instancier un objet et je ne trouve pas mon erreur. Lorsque je le fais dans mon main ça fonctionne. Mais lorsque je tente de faire la même chose dans ma partie private de ma classe.h ça ne fonctionne plus...

    Voici le constructeur:<
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    template <typename Poids>
    GrapheListe<Poids>::GrapheListe(const bool oriente, const Poids& infini) :
      m_nbSommets(0),
      m_oriente(oriente),
      m_infini(infini)
    {
     
    }
     
    template <typename Poids>
    GrapheListe<Poids>::~GrapheListe()
    {
    }
    Voici ce que je tente de faire avec cet objet:
    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
     
    #include <cstdlib>
    #include "liaison.h"
    #include "liste.h"
    #include "GrapheListe.hpp"
     
    using namespace std;
     
    /*
     * No description
     */
    class gererGraphe
    {
    	private:
     
    //Message d'erreur = gererGraphe.h:23: error: expected `;' before '(' token
                   GrapheListe<Liaison> graphe(false , 0);
     
            public:
    		// class constructor
    		gererGraphe(int NbLiaisons);
    		// class destructor
    		~gererGraphe();
    		//Génère le graphe avec tous les arcs nécessaires à l'analyse
    		void genererGraphe(list<Liaison> l_liaison);
     
     
    };
     
    #endif // gererGraphe_H
    Qqun peut m'aider??

  2. #2
    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
    Par défaut
    Tu n'as tout simplement pas le droit de l'initialisé ainsi dans un classe. Utilises plutôt les liste d'initialisation cf

    Quelque chose comme ça (non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class gererGraphe
    {
    	private:
     
                   GrapheListe<Liaison> graphe;
     
            public:
    		// class constructor
    		gererGraphe(int NbLiaisons) : graphe(false , 0){};
    };
    Mais cela a très peu d'effet. Ne souhaites-tu pas plutôt faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		gererGraphe(int NbLiaisons) : graphe(false , NbLiaisons){};

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    Oui en fait c'est plutôt ça que j'aimerais écrire... Mais en fait , je ne suis pas trop familier avec les listes d'initialisation... On dirait que j'ai de la difficulté avec la syntaxe aussi...

    Voici ce que je tentai...
    gererGraphe.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //constructeur
    gererGraphe::gererGraphe(int NbLiaisons):graphe(false , NbLiaisons)
    {
        //Ajouter le nombre de sommets nécessaire
        //Correspond au nombre de liaisons.
        int i;
        for(i = 0 ; i < NbLiaisons ; i++)
        {
            //graphe.ajouterSommet();
        }
    }
    gererGraphe.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
     
    class gererGraphe
    {
    	private:
     
           GrapheListe<Liaison> graphe;
     
     
        public:
    		// constructeur
    		gererGraphe(int NbLiaisons) : graphe(const bool false , const Poids& NbLiaisons);
    		// class destructor
    		~gererGraphe();
    		//Génère le graphe avec tous les arcs nécessaires à l'analyse
    		void genererGraphe(list<Liaison> l_liaison);
    };
    Le compilateur n'apprécie pas vraiment...

  4. #4
    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
    Par défaut
    Tu dois choisir soit de faire la déclaration entièrement dans la classe soit de la faire entièrement en dehors de la classe.

    Plutôt quelque chose comme :

    gererGraphe.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //constructeur
    gererGraphe::gererGraphe(int NbLiaisons):graphe(false , NbLiaisons)
    {
        //Ajouter le nombre de sommets nécessaire
        //Correspond au nombre de liaisons.
        int i;
        for(i = 0 ; i < NbLiaisons ; i++)
        {
            //graphe.ajouterSommet();
        }
    }
    gererGraphe.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
     
    class gererGraphe
    {
    	private:
     
           GrapheListe<Liaison> graphe;
     
     
        public:
    		// constructeur
    		gererGraphe(int NbLiaisons) ;
    		// class destructor
    		~gererGraphe();
    		//Génère le graphe avec tous les arcs nécessaires à l'analyse
    		void genererGraphe(list<Liaison> l_liaison);
    };
    Mais encore faut il qu'un constructeur de GrapheListe corresponde

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    Je me trouve assez incompétent mais lorsque j'essais d'écrire tout simplement

    GraphListe<Liaison> graphe; comme variable private,

    Ça ne passe pas...

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

Discussions similaires

  1. [3D] Probléme de jointure entre objet sous 3DSMAX
    Par astragoth dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 11/02/2006, 01h15
  2. Problème d'éclairage d'objet superposé
    Par yuriashford dans le forum OpenGL
    Réponses: 5
    Dernier message: 10/02/2006, 09h57
  3. Réponses: 5
    Dernier message: 19/11/2005, 18h53
  4. Réponses: 3
    Dernier message: 08/09/2005, 10h45
  5. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12

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