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 :

Classe parente imposant la définition d'une méthode à la signature variable


Sujet :

C++

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Classe parente imposant la définition d'une méthode à la signature variable
    Bonjour,

    J'ai une classe parente avec laquelle j'aimerais imposer à ses classes enfant la définition d'une fonction.
    Normalement, cela se fait avec une méthode virtuelle pure.

    Mais pour certains enfants, cette méthode peut avoir besoin d'arguments supplémentaires.

    Existe-t-il, pour cette manip, une manière de faire qui a été consacrée ? Ou dois-je oublier l'idée ?

    N'ayant pas besoin de comportement polymorphique, une méthode statique me conviendrait.

  2. #2
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 616
    Points
    616
    Par défaut
    Salut,

    Je suis pas sûr de bien comprendre, tu cherches à faire une surcharge mais avec des paramètres différents pour chaque classe fille?

    Quleque chose de ce genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      classe A 
          {
             public:
                virtual void f()=0;
          };
     
      class B: public A 
         {
           public:
               virtual void f(int) { ...... }
         };
    Si c'est le cas, il n'y a pas d'interêt à ce qu'elle soit virtuelle.

  3. #3
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Pas besoin de comportements dynamique + prototype non défini, ça veut bien dire que la fonction ne sera jamais appelée depuis une instance de la classe parente ?

    Dans ce cas pourquoi vouloir la factoriser dans la classe parente ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Je veux imposer une fonctionnalité, en imposant une méthode d'un nom précis.
    Il se trouve toutefois que certaines classes dérivées ont besoin d'arguments supplémentaires pour implémenter cette fonctionnalité.

    Mais je t'accorde que d'un point de vue "virtualité", ça n'a pas beaucoup de sens.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    je pense pas que ce soit possible de cette manière, et franchement je trouve pas ça sain ni recommandable comme idée. (En tous cas en C++, en Python il m'arrive d'en abuser^^)

    La seule idée farfelue qui me vient c'est une méthode externe à variadic template, et encore je sais pas si t'auras le résultat escompté.
    En surchargeant cette fonction pour chaque class et réaliser le bon appel sur la-dite class ?

    L'idée serait un truc comme ça (à la syntaxe près que je n'ai pas en mémoire, je ne manipule pour ainsi dire jamais de variadic template )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    template<class T, class... Args>
    void Foo(T* p, ...Args) { p->_Foo(Args); }
    struct A { template<class...Args> void Foo(...Args) { Foo(this, Args); } void _Foo() {} };
    struct B : A { void _Foo(int) {} };
    Peut-être que le membre Foo est superflu, si tu peux te contenter de forcer l'appel à la méthode externe ?

    Bref, sans conviction
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Bon, je vais laisser tomber.

    Après tout, ce n'est pas pour une API, mais pour un usage interne. Un bon commentaire suffira.

    Merci !

Discussions similaires

  1. Erreur "class, interface or enum expected" pour une méthode main
    Par francky74 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 28/01/2014, 21h20
  2. Imposer du code dans une méthode redéfinie
    Par JCD21 dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 25/02/2012, 14h06
  3. Réponses: 5
    Dernier message: 05/12/2010, 21h25
  4. Définition d'une méthode dans un fichier ?
    Par tintin72 dans le forum Langage
    Réponses: 5
    Dernier message: 15/03/2010, 13h40
  5. accéder à la définition d'une méthode
    Par caro_caro dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/04/2008, 17h55

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