Constructeur
Marina
-
patcartier Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
patcartier Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une petite question simple svp, dans mon main j'ai ceci:
Donc j'ai 2 objets de type classe Avion, mon constructeur prend en paramètre son nom, donc une chaîne dans la classe mais il doit être aussi possible de le créer sans lui passer son nom en paramètre. Comment faire, j'ai essayé d'écrire 2 constructeurs mais seul un est tjs appelé..
Merci.
J'ai une petite question simple svp, dans mon main j'ai ceci:
Avion v; Avion v1("jet");
Donc j'ai 2 objets de type classe Avion, mon constructeur prend en paramètre son nom, donc une chaîne dans la classe mais il doit être aussi possible de le créer sans lui passer son nom en paramètre. Comment faire, j'ai essayé d'écrire 2 constructeurs mais seul un est tjs appelé..
Merci.
A voir également:
- Constructeur
- Constructeur automobile - Guide
- Adresse mac constructeur - Guide
- Constructeur agrandissement maison - Guide
- C++ pointeur, constructeur, attributs ✓ - Forum C++
- BLUETECH un site constructeur ? - Forum TV & Vidéo
9 réponses
Tu dois utiliser des méthodes d'accès (get/set) pour modifier le nom :
Exemple complet :
Exemple complet :
#include <iostream> #include <string> class Avion { protected: std::string nom; public: inline Avion() { nom="_default_"; } inline Avion(std::string str) { nom=str; } inline void setNom(std::string nouveau) { nom = nouveau; } inline std::string getNom() { return nom; } }; int main() { Avion v; std::cout << v.getNom() << std::endl; v.setNom("boeing"); std::cout << v.getNom() << std::endl; v.setNom("airbus"); std::cout << v.getNom() << std::endl; return 0; }
Bonjour, non mon main est simplement celui ci:
A l'exécution j'ai ceci sur la sortie standard:
Avion allumé
Avion jet allumé
Donc je fais 2 constructeurs avec des cout << dedans?
merci
int main(void) { Avion v; Avion v1("jet"); }
A l'exécution j'ai ceci sur la sortie standard:
Avion allumé
Avion jet allumé
Donc je fais 2 constructeurs avec des cout << dedans?
merci
Il n'y a aucune raison de mettre des cout dans un constructeur. Ça peut bien sûr être utile pour le débogage mais ce n'est pas une fin en soit...
Si tu ne passes pas le nom en paramètre, soit tu utilises un nom par défaut, soit il faut que tu le définisses après coup avec une méthode... Mais ton main n'est clairement pas suffisant !
Si tu ne passes pas le nom en paramètre, soit tu utilises un nom par défaut, soit il faut que tu le définisses après coup avec une méthode... Mais ton main n'est clairement pas suffisant !
C'est un exercice que je fais et donc qu'on m'impose, rien ne marche, je te montre mon code, je re précise que le main reste inchangé c'est obligatoire:
Et donc avec ça j'ai tjs l'erreur au compilateur: no machting function for call Avion:Avion()..c'est du au fait que dans le main j'ai Avion v et que je passe aucun argument (pas de parenthèse), comment résoudre ça?
int main(void) { Avion v; Avion v1("jet"); return 0 }
class avion { private: std::string name; public: Avion(std::string name); ~Avion(); }
Et donc avec ça j'ai tjs l'erreur au compilateur: no machting function for call Avion:Avion()..c'est du au fait que dans le main j'ai Avion v et que je passe aucun argument (pas de parenthèse), comment résoudre ça?
mais si je fais comme tu dis j'aurais tjs un message d'erreur à cause du second appel Avion v1("jet") car je DOIS passer le nom en paramètre mais je dois aussi pour l'appeler SANS paramètre avec une chaine vide par défaut, donc je suis bloquée...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tu utilises le mot inline, je ne l'ai jamais vu...n'y a t'il aucun autre moyen plus simple de faire?
non ça ne marche pas tu écris des fonctions annexes, donc je repose ma question, comment avoir mon résultat avec mon main, 2 constructeurs? Je ne dois pas écrire de get ou autre...
je suis désolée mais ta méthode ne marche pas avec mon main KK je viens d'essayer :(...
Absolument rien ne marche, je te montre tout monde code, le main DOIT RESTER INCHANGé:
main.cpp:
avion.hh:
avion.cpp
Que dois je ajouter dans mon avion cpp et avion.hh pour que le premier appel du main, donc Avion v; fonctionne...
Absolument rien ne marche, je te montre tout monde code, le main DOIT RESTER INCHANGé:
main.cpp:
int main(void) { Avion v; Avion v1("jet"); return 0 }
avion.hh:
class avion { private: std::string name; public: Avion(std::string name); ~Avion(); }
avion.cpp
Avion::Avion(std::string name) { std::cout << "Avion" << this->name << "allumé" << std::endl; }
Que dois je ajouter dans mon avion cpp et avion.hh pour que le premier appel du main, donc Avion v; fonctionne...