CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[c++] heritage copy constructor probleme

akumabeelz
akumabeelz
Niveau 10
17 janvier 2015 à 00:35:32

Bonsoir il y a certaines notion que j'ai pas trop saisie en c++

comment faire un copie constructor d'une class qui hérite d'une class?

par example ma class unit contient plusieurs variables et ma class marine hérite de la classe unit en public

donc dans la classe marine je vais avoir un constructor puis une copie le probleme c'est que je ne sais pas comment initialiser les valeurs de la classe unit pour le constructor copy de marine

ma classe unit :


#ifndef _UNIT_H_
#define _UNIT_H_

#include <iostream>
#include <string>
  
 class unit
 {
 protected:
     std::string name;
  std::string type;
   int   posX;
   int   posY;
   int   dam;
int   cHP;
   int   mHP;
    public:
   explicit unit(std::string name, std::string type, int posX, int posY, int dam, int cHP, int mHP);
   virtual ~unit();
   unit(const unit &ref);
   unit &operator=(const unit &ref);
   unit();
   std::string getName() const;
   std::string getType() const;
    int   getPosX() const;
  int   getPosY() const;
  int   getDam() const;
   int   getCHP() const;
    int   getMHP() const;
    unit &operator+=(int tamer);
  unit &operator-=(int tamer);
  };
 
  std::ostream &operator<<(std::ostream &os, unit &);
   
  #endif /* !_UNIT_H_ */

mon.h marine :
#ifndef _MARINE_H_ #define _MARINE_H_ #include <string> #include <iostream> #include "unit.h" class marine : public unit { public: marine(const std::string &name, int posX, int posY); virtual ~marine(); marine(const marine &); marine(); marine &operator=(const marine &); void move(int x, int y); void stimpack(); }; #endif /* !_MARINE_H_ */

dans unit.cpp je fais directement


unit::unit(const unit &ref) : name(ref.name), type(ref.type), posX(ref.posX), posY(ref.posY), dam(ref.dam), cHP(ref.cHP), mHP(ref\
       .mHP)
  {
  }

//dans le marine.cpp
marine::marine(const marine &ref) : name(ref.name), type(ref.type) etcc..

j'ai comme erreur :

marine.cpp: In copy constructor ‘marine::marine(const marine&)’:
marine.cpp:38:37: error: class ‘marine’ does not have any field named ‘name’
marine::marine(const marine &ref) : name(ref.name)

les variables sont dans la classe parent et je veux les initialiser en list pour la copy constructor de la class marine

godrik
godrik
Niveau 30
17 janvier 2015 à 03:31:45

Il faut appeler un constructeur de la classe mere:

Derived::Derived (int p_mere, int p_fils)
:Base(p_mere), fils(p_fils)
{}

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment