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 :

spécialisation de template en fonction de l'héritage


Sujet :

Langage C++

  1. #41
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Le mieux que j'ai, va matcher à la fois les fonctions (static / non static) et les données membres. (mais l'héritage marche)

    Mais je me demande, dans quel cas tu peux avoir besoin de checker des données membres. (a fortiori quand on sait que dans la majorité des cas, les données membres sont privées)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  2. #42
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Goten Voir le message
    Le mieux que j'ai, va matcher à la fois les fonctions (static / non static) et les données membres. (mais l'héritage marche)
    ok merci, ça correspond à un des deux codes que j'avais trouvé.
    De ce que j'ai vue, gcc propose le typeof qui permettrai peut être de faire cela. Mais il n'existe pas pour visual.

    Citation Envoyé par Goten Voir le message
    Mais je me demande, dans quel cas tu peux avoir besoin de checker des données membres. (a fortiori quand on sait que dans la majorité des cas, les données membres sont privées)
    Avec Qt j'ai un smartPtr qui se met à null quand une classe héritant de QObject est détruite

    J'ai créé dans QExtend un autre smartPtr qui en fonction que la classe dérive ou non de QObject va utiliser un QWeakptr ou un simple pointeur en interne.

    Maintenant, je voulais pouvoir ajouter la possibilité à ce smartPtr d'avoir la même possibilité sur des classes autre que QObject.

    Et je trouvais l'idée intéressante de tester la présente d'un membre précis (définie dans une macro) pour que le smartptr l'exploite pour savoir quand il est détruit(et donc quand la classe pointé est détruite) pour se remettre à zéro.

  3. #43
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    utilise un typedef qui servira de tag plutôt.

    Genre si tu veux qu'une classe soit prise en compte dans ton truc, tu définis qqch genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef char handle_destruction_tag;
    Et après avec un coup de SFINAE tu peux gérer aisément.

  4. #44
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Alp Voir le message
    utilise un typedef qui servira de tag plutôt.

    Genre si tu veux qu'une classe soit prise en compte dans ton truc, tu définis qqch genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef char handle_destruction_tag;
    Et après avec un coup de SFINAE tu peux gérer aisément.
    Le check du typedef marche avec l'héritage? (il me semble que oui)

  5. #45
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Oui ça marche. (et je plussoie Alp au passage, c'est une bien meilleure solution)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #46
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par yan Voir le message
    Le check du typedef marche avec l'héritage? (il me semble que oui)
    Oui.

    Et l'idée, c'est que avoir "ce type" dans une classe "cliente" permettra à ton code à toi de savoir quoi faire. Et tu n'as pas à te prendre la tête.

  7. #47
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    j'arrive aprés la guerre. J'avais uplaodé sur Boost.Vault un tuc qui s'appelle Introspection et qui fait tout ça proprement avec des macros styles MPL pour generer les meta-functions. Y a has_method_named_xxx, has_const_method_xxx, has_member et is_in_namespace.


    Le lien:
    http://www.boostpro.com/vault/index....d182ac29561fa1

  8. #48
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    et pour le tag dispatching, le quick'n'toast de Eric Niebler:
    http://www.boost.org/doc/libs/1_40_0...ntation.sfinae

  9. #49
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Lol, Ca ressemble vachement à du gros hack tous cela.
    merci pour les liens. J'ai de quoi commencer.
    Il existe un tuto sur sfinae?

  10. #50
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    y a 0 hack, tout se base sur les defs du standard

  11. #51
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Joel F Voir le message
    y a 0 hack, tout se base sur les defs du standard
    c'est ça qui est fort
    il détourne des choses pour faire un truc très puissant

  12. #52
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Non on a pas de tuto sur SFINAE. J'avais commencé mais avec la FAQ C++ qu'on a ainsi que les quelques textes dessus que je t'ai donné plus haut, on a pas vraiment besoin. Et puis quasi personne lirait ça. J'ai déjà quasi aucun lecteur pour mon tuto sur les traits/policies alors SFINAE ...

  13. #53
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Alp Voir le message
    Non on a pas de tuto sur SFINAE. J'avais commencé mais avec la FAQ C++ qu'on a ainsi que les quelques textes dessus que je t'ai donné plus haut, on a pas vraiment besoin. Et puis quasi personne lirait ça. J'ai déjà quasi aucun lecteur pour mon tuto sur les traits/policies alors SFINAE ...
    En attendant, les seules ressources disponibles sont en anglais. Disposer de tutos (même peu lus) en français permet aussi de plus diffuser ces nouvelles pratiques de développement. Donc, un tuto SFINAE montrant le principe et un petit cas d'utilisation pour illustrer serait toujours bienvenu. A bon entendeur ...

  14. #54
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    ... avec un lien sur cette discussion qui est déjà en soi presque un tuto

  15. #55
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par camboui Voir le message
    ... avec un lien sur cette discussion qui est déjà en soi presque un tuto
    Sur ce site, il semble y avoir des choses à lire
    http://www.generic-programming.org/

    Ce qui m'étonne, c'est le peu d'info. On te dit que c'est possible, boost te le fournis mais , y as pas beaucoup de lien qui t'explique et te montre ce que tu peut faire...
    Ca donne l'impression que c'est le saint Graal mais que personne ne veut l'expliquer Surtout, avec le peu d'exemple, on sent la puissance du truc (même si à la base c'est pas prévue pour). Et si j'ai bien compris ce que devais apporter C++0x as été abandonné,non?
    http://www.drdobbs.com/cpp/218600111...RSKHWATMY32JVN

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Spécialisation partielle d'une fonction template
    Par N0vember dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2010, 20h49
  2. Réponses: 8
    Dernier message: 18/06/2007, 15h06
  3. Réponses: 8
    Dernier message: 01/03/2007, 15h07
  4. [POO] Pointeur sur fonction membre et héritage
    Par MrDuChnok dans le forum C++
    Réponses: 9
    Dernier message: 20/07/2006, 17h19
  5. Réponses: 7
    Dernier message: 01/01/2006, 03h28

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