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++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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 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 �clair� Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    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
    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
    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.

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    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.

  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
    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 !

  6. #6
    Membre Expert
    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
    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 ?

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