begin process at 2012 05 30 01:58:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

probleme avec constructeur surchargé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme avec constructeur surchargé

mardi 3 avril 2007 à 20:23:17 | probleme avec constructeur surchargé

dr971

Bonjour je programme un simulateur de course auto en c++ et j'ai un gro prob avec mes classes.
en fait j'ai 2 classes :

//classe voiture :
#ifndef VOITURE_H
#define VOITURE_H

#include "Obstacle.h"
/*
* No description
*/
class Voiture
{
public:

...

// class constructor
Voiture();
// class destructor
~Voiture();

private:

Obstacle m_obstacleEnCours;
Obstacle m_Ligne_droite(1 , "Ligne droite" , 0);

};

#endif // VOITURE_H


Une classe Obstacles :

#ifndef OBSTACLE_H
#define OBSTACLE_H

/*
* No description
*/
class Obstacle
{
public:


// surcharge constructeur
Obstacle(int iden ,std::string nom , int effet);
// class constructor
Obstacle();
// class destructor
~Obstacle();

private:

//Attributs
std::string m_nom_obstacle;
int m_identifiant;
int m_effet;

};

#endif // OBSTACLE_H

Dans obstacle.cpp j'ai :
#include <string>
#include "Obstacle.h" // class's header file

using namespace std;



// class constructor
Obstacle::Obstacle() : m_identifiant(0) , m_effet(0) , m_nom_obstacle("obstacle_par_defaut")
{

}

// surcharge constructeur
Obstacle::Obstacle(int iden ,string nom , int effet) : m_identifiant(iden) , m_nom_obstacle(nom) , m_effet(effet)
{
}
// class destructor
Obstacle::~Obstacle()
{
}

Mon probleme est que lorsque je défini ma variable m_obstacleEnCours avec le constructeur simple mon prog l'accepte et compil mais lorsque ke je défini Obstacle m_Ligne_droite(1 , "Ligne droite" , 0) il ne compil pas. Je ne vois pas mon erreur.

Pourriez vous m'aider svp? merci d'avance.
mardi 3 avril 2007 à 21:13:28 | Re : probleme avec constructeur surchargé

luhtor

Ton compilo te donne forcément un message d'erreur. Sans lui, on pourra pas t'aider.
mardi 3 avril 2007 à 21:42:17 | Re : probleme avec constructeur surchargé

dr971

Voila la reponse ke mon donne le compilateur :

Compilateur: Default compiler
Building Makefile: "C:\Documents and Settings\Propriétaire\Bureau\tp c++ V3\Makefile.win"
Exécution de  make...
make.exe -f "C:\Documents and Settings\Propriétaire\Bureau\tp c++ V3\Makefile.win" all
g++.exe -c voiture.cpp -o voiture.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  

In file included from voiture.cpp:5:
Voiture.h:61: error: expected `;' before '(' token

make.exe: *** [voiture.o] Error 1

Exécution terminée

Je pense k'il a vraiment un prob avec ma variable Obstacle m_Ligne_droite(1 , "Ligne droite" , 0);  mais je sais pas pourquoi

mardi 3 avril 2007 à 22:48:57 | Re : probleme avec constructeur surchargé

yann_lo_san

Tu ne peux pas instancier directement un objet dans sa déclaration !


class Voiture
{
public: 

   // .ctor
   Voiture()
   {
      m_pLigne_droite = new Obstacle(1 , "Ligne droite" , 0);
   }

   // OU
   //Voiture(int i, string s, int j)
   //{
   //  m_pLigne_droite = new Obstacle(i , s , j);
   //}

   //.dtor
   ~Voiture()
   {
      if( m_pLigne_droite ) delete m_pLigne_droite;
   }   

private: 

   Obstacle m_obstacleEnCours; // appelle .ctor defaut
   Obstacle*m_pLigne_droite;   // non initialisé
};

mercredi 4 avril 2007 à 00:00:42 | Re : probleme avec constructeur surchargé

luhtor

Pourquoi utiliser un pointeur ? Pour risquer des fuites ?

La meme version sans pointeur:
class Voiture
{
public: 

   // .ctor
   Voiture():
      m_ligne_droite(1, "Ligne droite", 0)
   {
   }

   // OU
   //Voiture(int i, string s, int j)
   //{
   //  m_pLigne_droite = new Obstacle(i , s , j);
   //}

   //.dtor
   ~Voiture()
   {
      if( m_pLigne_droite ) delete m_pLigne_droite;
   }   

private: 

   Obstacle m_obstacleEnCours; // appelle .ctor defaut
   Obstacle m_ligne_droite;   // non initialisé
};
mercredi 4 avril 2007 à 00:01:24 | Re : probleme avec constructeur surchargé

luhtor

Bien sur, faut enlever le "delete m_pLigne_droite", j'ai oublié.
mercredi 4 avril 2007 à 15:07:02 | Re : probleme avec constructeur surchargé

yann_lo_san

J'utilise des ptrs pour l'agrégation d'objets, car s'il y en a beaucoup, trop de pression sur la pile.
Mais ta solution sera effectivement mieux compris par l'intéressé.

(pas de risque de fuite quant le destructeur est implémenté tout de suite)

mercredi 4 avril 2007 à 15:09:18 | Re : probleme avec constructeur surchargé

yann_lo_san

Sinon tu peux passer sur VB et tu n'aura plus de problème de pointeur...

mercredi 4 avril 2007 à 16:53:38 | Re : probleme avec constructeur surchargé

luhtor

Mais il y a des chances pour qu'un object de classe Voiture soit deja un pointeur, auquel cas, je vois pas l'intéret du pointeur, puisqu'on ne travaillera pas sur la pile. (Ou éclaire moi si je me trompe) :)

Pour les fuites, ya pas que le pb du destructeur, mais des éventuels fonctions de recopies, et euh perso, j'ai jamais fais une classe d'une traite :)


Cette discussion est classée dans : int, class, effet, voiture, obstacle


Répondre à ce message

Sujets en rapport avec ce message

les class tjs le class... [ par JediMaster ] bon ben chuis enfin arriver a faire un tableau dans une classe et chuis tres content mais j'ai un autre pb je veux faire un tableau d'objet que j'init Pb de class [ par SfyLer ] Imaginons :class teste{public:void fonction();void fonction2();};int teste::fonction() {int a = 1;return 0;}int teste::fonction2() {//ici j'aimerais r Liste chainée d'objet en C et le tri [ par fab30 ] Apres beaucoup d'heures passé à essayer de trier une liste simplement chainé sur un élément de la structure qui compose la liste, et après avoir essuy pb error C2011 par pitié aidé moi [ par neonmix ] Voici mon prog:c'est un garage ki possède des voitures, ces voitures peuvent être "de course" ou "de série" (classe mere voiture, classe fille voiture ::WinMain [ par anarchysniper ] Comme ceux qui suivent régulièrement le forum où s'échoue lamentablement sous formes de pitoyables suppliques mes tentatives d'aligner deux instructio Creation de class en C++ [ par js1000 ] Bonjour a tous !Je suis novice en C++ et je suis en train d'apprende les bases. J'ai donc une question a vous posez :Je veux ecrire une classe Matrice Class et fenetre [ par abdoulax ] Bonjour, Je voudrai créer une class qui contient toutes les méthodes correspondant à l'affichage de fenêtre. Le but étant de passé des variables entr constructeur herité implicite [ par Guillemouze ] salut a tous, j'ai une question toute bete : est il possible d'appeler implicitement un constructeur d'une class mere?j'ai 3 niveaux de classes; et je Problème d'héritage multiple [ par Aquarian ] Bonjour, Voici un morceau de code sur lequel j'ai un problème, en fait il se compile bien sous Visual Studio .NET 2003 ou sous Dev-cpp, mais il ne fai multi heritage [ par foxz ] Bonjour,d'une maniere general.class strm{ // base stream virtual int w(void*,int)=0; // write virtual int r(void*,int)=0; //read};class fil:virtual pu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales