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

Langage C++ Discussion :

Changer le nom d'un membre en focntion d'un paramètre template


Sujet :

Langage C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Changer le nom d'un membre en focntion d'un paramètre template
    Bonjour,

    J'ai une classe qui peut avoir deux sémantiques différentes (mais néanmoins apparentées).

    J'aimerais changer le nom de certaines variables à l'aide d'un argument template booléen.

    Est-ce possible ?

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Hértiage + spécialisation, mais je trouve ca étrange comme besoin.
    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
     
    template<bool> struct Named;
    template<>
    struct Named<true>
    { 
      int name1; 
      protected:
        ~Named(){}
    }
    struct Named<false>
    { 
      int name2; 
      protected:
        ~Named(){}
    }
    template<bool b>
    struct A : Named<b>
    { };

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Merci.

    C'est effectivement la solution à laquelle j'étais arrivé dans le train après écrit mon message.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    N'oublie, cependant, pas que les variables membres sont sensées n'être que des détails d'implémentation...

    A ce titre, et pour respecter demeter, tu ne devrais jamais avoir besoin d'accéder à un membre ni par son nom, ni (idéalement du moins) au travers d'un accesseur une fois que tu es en dehors de la classe.

    L'idéal serait beaucoup plus de faire en sorte que toutes les fonctions qui manipule le membre soient nommées de manière cohérente par rapport à la sémantique de tes classe, mais que ce membre ne soit purement et simplement pas accessible en dehors.

    Bien sur, il n'est pas toujours possible de travailler de la sorte (entre autres quand un membre représente une propriété de la classe et non un moyen dont dispose cette classe pour fournir un service attendu), mais il reste préférable de travailler comme je l'indique "aussi souvent que possible"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Cette classe est un POD (mis à part le constructeur, qui initialise les membres) dont tous les membres sont privés.

    L'accès est géré par un espace de nom et des déclarations d'amitié.

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Citation Envoyé par oodini Voir le message
    Cette classe est un POD (mis à part le constructeur, qui initialise les membres) dont tous les membres sont privés.

    L'accès est géré par un espace de nom et des déclarations d'amitié.
    En général, je préfère un void* plutot qu'un private-POD.

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par leternel Voir le message
    En général, je préfère un void* plutot qu'un private-POD.
    En C, peut etre, parce que tu n'as pas d'autre choix...

    Par contre, en C++, tu passerais par la fenêtre si tu venais à utiliser un void* dans un projet dont j'aurais la responsabilité, essentiellement parce qu'avec void*, tu perds toute possibilité de controle de type.

    Ceci dit, le cas d'un POD (dans l'acception C++11 ) est, effectivement, le cas d'exception dont je parlais précédemment

    Cependant, tu devrais plutot essayer de réfléchir à la possibilité éventuelle d'avoir une structure unique (avec des noms uniques !!!) agrémentée de différentes politiques qui, elles, exposeraient non plus les données du POD mais une interface qui le manipule, avec les noms adaptés au différentes possibilités
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [VBA] Changer le nom d'un formulaire
    Par lbourlet dans le forum Access
    Réponses: 2
    Dernier message: 05/11/2004, 11h54
  2. Changer le nom du proprietaire de la table
    Par ykane dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2004, 16h18
  3. TREEVIEW : Editer (changer le nom) d'un Noeud
    Par cyberlewis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/07/2004, 15h00
  4. [Repertoire] Changer le nom d'un repertoire ...
    Par Frederic dans le forum Langage
    Réponses: 2
    Dernier message: 01/11/2002, 12h39
  5. Réponses: 2
    Dernier message: 26/06/2002, 13h16

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