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 :

maquette de classes pour avoir du polymorphisme


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    En recherche d’emploi
    Inscrit en
    Mai 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En recherche d’emploi
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2015
    Messages : 21
    Par défaut maquette de classes pour avoir du polymorphisme
    Bonjour,
    J'écris un programme de simulation (devant s'interfacer avec Matlab mais pas
    aujourd'hui) et je cherche a décomposer en classes: certaines pour faire des
    opérations sur les données, d'autres prenant ces données pour faire des
    imports/exports sur fichier. En gros je voudrais savoir comment passer un
    objet std::vector<double> d'une classe a une autre.
    Pour l'instant une maquette de mon code ressemble à ca (ce n'est qu'une
    maquette):
    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
    class MaClasseBase {
     
       public:
         MaClasseBase(std::vector<double> entrees, int dsize, int dnp);
         ~MaClasseBase(void);
      //   MaClasseBase(const MaClasseBase &source);
      //   MaClasseBase &operator=(const MaClasseBase &source);
     
         virtual bool entre(void);
         bool recalcule(void); // va appeler entre()
         // virtual bool recalcule(void);
        bool pass_iodata(std::vector<std::pair<double,double>> listy, int select);
     
         std::vector<double> valeurs;
         std::vector<double> newvaleurs;
     
       protected:
         std::vector<double> coeffs;
         int size;
         int np;  
    };
    le corps de la methode membre pass_iodata(listy, select) contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      int k, sel=1;
      std::pair<double, double> singleton;
     
     
      for (k=0; k<size; k++) {
          singleton.first = (double (k))*Ts;
          switch (sel) {
             case 1:  singleton.second = newvaleurs[k];  // more case when complete
    		  break;
          }
          std::cout << singleton.second << " ";
          list_yh.push_back( singleton );
      }
    (Vu la déclaration de la classe MaClasseBase (et celles qui suivront) je précise
    que je souhaiterais faire du polymorphisme avec un pointeur type de la classe de base
    sur une classe dérivée.)
    Y-aurait-il un moyen de se remplacer cette méthode par un constructeur copie de
    l'objet std::vector<double> newvaleurs? Ou de spécifier aussi une méthode
    exportant ce vecteur dans un fichier en prenant une reférence const en entrée?
    Je suis juste à la recherche d'une version marchant, pas forcement optimisée,
    mais sans trop réinventer. Je vous remercie d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Bonjour,

    Pour copier un std::vector il te suffit d'utiliser l'opérateur =, tu n'as pas besoin de reparcourir ton vector d'entrée pour créer un autre vector.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 493
    Par défaut
    Salut,

    Avant de foncer tête baissée sur l'héritage, il faut de poser les bonnes questions:
    En as-tu réellement besoin ?
    Pourquoi en as-tu besoin ?
    La classe fille est-elle (ou est-elle substituable à) la classe mère ?

    De plus, il ne faut pas voir les classes comme des conteneurs de données, mais comme des fournisseurs de services.

    Remarque additionnelle sur ton code:
    Utilise des références constantes sur tes paramètres d'entrée, ca t'éviteras les copies inutiles (et des bug très subtiles).

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/11/2018, 09h01
  2. Réponses: 1
    Dernier message: 19/02/2018, 11h58
  3. Réponses: 6
    Dernier message: 01/08/2011, 00h22
  4. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  5. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 17h22

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