Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1376 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [resolu]tableau d'objet dans une classe (et ca marche pas bien sur)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]tableau d'objet dans une classe (et ca marche pas bien sur)

n°2034299
karlakir
Posté le 05-11-2010 à 16:27:10  profilanswer
 

Salut,
 
je débute et j'ai deja des petits problemes.
 
resume:
j'ai une classe voiture et une classe parking.
Je veux mettre des voitures dans le parking. (mais le gardien est pas trop cool, il veut pas  :bounce: )
 
j'ai donc cree dans parking.hpp un attribut:

Code :
  1. voiture _park


 
et dans parking.ccp:

Code :
  1. _park = new voiture[inCapa];


 mais il veut pas...
 
je vous met les codes:  
(la classe voiture marche bien, pas d'erreur de compilation ni d'execution.)
 
voiture.hpp

Code :
  1. #ifndef _V_HPP
  2. #define _V_HPP
  3. #include <iostream>
  4. #include <string>
  5. class voiture
  6. {
  7.   public:
  8.     voiture(std::string inMarque, std::string inCouleur,int inPu,int intinRm,int inConsu,int inConseu,int inCapres,int inContres,int inECO2);
  9.     void remplir_bibi() {if(getContres() < getCapres()) setContres(getCapres());}
  10.     void ontheroad(int inDist, std::string inType);
  11.     std::string getMarque() {return Marque;}
  12.     std::string getCouleur() {return Couleur;}
  13.     static int getnbrvoiture() {return compteur;}
  14.     int getContres() {return Contres;}
  15.     int getPu()  {return Pu;}
  16.     int getRm()  {return Rm;}
  17.     int getConsu()  {return Consu;}
  18.     int getConseu() {return Conseu;}
  19.     int getCapres() {return Capres;}
  20.     int getECO2() {return ECO2;}
  21.     void setMarque(std::string inMarque)  {Marque  = inMarque;}
  22.     void setCouleur(std::string inCouleur)  {Couleur = inCouleur;}
  23.     void setContres(int inContres) {Contres = inContres;}
  24.     void setConseu(int inConseu)  {Conseu = inConseu;}
  25.     void setCapres(int inCapres)  {Capres = inCapres;}
  26.     void setPu(int inPu) {Pu = inPu;}
  27.     void setRm(int inRm) {Rm = inRm;}
  28.     void setConsu(int inConsu) {Consu = inConsu;}
  29.     void setECO2(int inECO2) {ECO2 = inECO2;}
  30.   private:
  31.     static int compteur;
  32.     std::string Marque;
  33.     std::string Couleur;
  34.     int Contres; // contenu reservoir
  35.     int Pu;
  36.     int Rm;
  37.     int Consu;
  38.     int Conseu;
  39.     int Capres;
  40.     int ECO2;
  41. };
  42. #endif


 
parking.hpp

Code :
  1. #ifndef _PA
  2. #define _PA
  3. #include <iostream>
  4. #include <string>
  5. #include "voiture.hpp"
  6. class Parking
  7. {
  8.   public:
  9.     Parking(int inCapa);
  10.     ~Parking();
  11.  
  12.   void getContPark();//liste contenu du parc
  13.   void addvoit(voiture  &invoit);
  14.   private:
  15.     voiture * _park;
  16.     int _capacite;
  17.     int _nbrvoit;
  18. };
  19. #endif


 
parking.cpp

Code :
  1. #include "parking.hpp"
  2. Parking::Parking(int inCapa)
  3. {
  4.   _capacite = inCapa;
  5.   _nbrvoit  = 0;
  6.   _park = new voiture[inCapa];
  7. }
  8. Parking::~Parking()
  9. {
  10.   delete[] _park;
  11. }
  12. void Parking::getContPark()//liste contenu du parc
  13. {
  14.   int i = 0;
  15.   for (; i < _nbrvoit; i++)
  16.   {
  17.     std::cout << "voiture " << i << ": "<< _park[i].getMarque() <<" "<<_park[i].getCouleur()<<std::endl;
  18. }
  19. }
  20. void Parking::addvoit(voiture  &invoit)
  21. {
  22.   _park[_nbrvoit -1] = invoit;
  23.   _nbrvoit++;
  24. }


 
main.cpp

Code :
  1. #include "voiture.hpp"
  2. #include "parking.hpp"
  3. int voiture::compteur = 0;
  4. int main(void)
  5. {
  6.   voiture lamienne("Mustang", "nuit",400,2500,10,7,65,65,10);
  7.   voiture ladfienne("Mustang", "nuit",400,2500,10,7,65,65,10);
  8.   lamienne.ontheroad(30, "ville" );
  9.   std::cout << voiture::getnbrvoiture() << std::endl;
  10.  
  11.   Parking brio(10);
  12.  
  13.   return 0;
  14. }


 
voila
merci d'avance
 
ps: l'erreur doit etre ridicule, c'est notre premier TP de C++...


Message édité par karlakir le 07-11-2010 à 14:02:44

---------------
Si vous avez rien à faire, cliquez ici:
mood
Publicité
Posté le 05-11-2010 à 16:27:10  profilanswer
 

n°2034329
gilou
Modérateur
Modzilla
Posté le 05-11-2010 à 18:55:08  profilanswer
 

Citation :

_park[_nbrvoit -1] = invoit;
_nbrvoit++;


C'est pas bon:
Au départ, _nbrvoit est à 0
Quand tu ajoutes ta première voiture, tu fais donc: _park[ -1] :whistle:  
Si tu fais  

Citation :

_park[_nbrvoit] = invoit;
_nbrvoit++;


Ça devrait être mieux.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --    In umbra igitur pugnabimus. --
n°2034371
karlakir
Posté le 06-11-2010 à 00:34:45  profilanswer
 

C'est déjà un problème que j'avais pas vu, merci  :)  
 
il y a encore une derniere erreur à la compilation:
 
la ligne:

Code :
  1. _park = new voiture[inCapa];

semble lui casser les pieds
je crée bien un tableau contenant inCapa objet voiture, je ne devrais pas avoir à préciser autre chose si?
 

Code :
  1. g++   -Wall -ansi -pedantic -Wextra -c parking.cpp -o parking.o
  2. parking.cpp: In constructor ‘Parking::Parking(int)’:
  3. parking.cpp:7: error: no matching function for call to ‘voiture::voiture()’
  4. voiture.hpp:10: note: candidates are: voiture::voiture(std::string, std::string, int, int, int, int, int, int, int)
  5. voiture.hpp:8: note:                 voiture::voiture(const voiture& )
  6. make: *** [parking.o] Erreur 1


n°2034382
el muchach​o
Comfortably Numb
Posté le 06-11-2010 à 09:55:40  profilanswer
 

C'est parce que tu n'as pas défini de constructeur sans paramètres pour la classe Voiture. A partir du moment où tu définis un constructeur, le compilateur ne génère pas de constructeur par défaut.
Pense à vérifier s'il y a des places libres avant d'ajouter une voiture, sinon tu vas dépasser la capacité du tableau.


Message édité par el muchacho le 06-11-2010 à 09:56:53
n°2034480
karlakir
Posté le 07-11-2010 à 14:03:17  profilanswer
 

c'est bon ca marche,  
 
merci pour votre aide et vos réponses!!


---------------
Si vous avez rien à faire, cliquez ici:

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [resolu]tableau d'objet dans une classe (et ca marche pas bien sur)

 

Sujets relatifs
Tableau associatif avec clé numeriqueRécuperer objet dans tableau en fonction du champ d'un objet
XLST - Condition xsl:if ne marche pasMessage d'erreur tableau
Structure en c sur un tableau de chaine de caractereTableau avec separateur
[RESOLU] typedef de classe templateRenvoie de tableau en appelant une classe
Plus de sujets relatifs à : [resolu]tableau d'objet dans une classe (et ca marche pas bien sur)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR