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 :

Interface sans virtualisation ?


Sujet :

C++

  1. #1
    Membre actif
    Inscrit en
    Septembre 2010
    Messages
    73
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Par d�faut Interface sans virtualisation ?
    Bonjour,

    J'aimerais savoir si il est possible de s'assurer qu'une classe ait un certain ensemble de fonctions, sans avoir recours � la virtualisation.

    Par exemple voici une interface tr�s simple.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    struct Interface {
     
    //Constructeur...
    //Destructeur..
        void fonctionA();
        void fonctionB();
     
    };
    J'aimerais m'assurer qu'une classe Implementation (ou Implementation2, Implementation3) ait bien une fonctionA et une fonctionB impl�ment�.

    Je d�finie si j'utilise Implementation2 ou Implementation3 lors de la compilation.
    Je voudrais �viter l'h�ritage avec des fonctions virtuelles simplement parce que �a n'aurait pas de sens dans mon programme d'avoir un objet abstrait de type Interface. Cela permettrait d'�viter les r�solutions dynamiques des fonctions virtuelles.

    Je pose la question surtout par curiosit�.

    Merci.

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    D�veloppeur Temps r�el Embarqu�
    Inscrit en
    Janvier 2011
    Messages
    3 149
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur Temps r�el Embarqu�

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par d�faut
    Pour ce que j'ai lu la notion d'interface telle que tu la per�ois n'existe pas vraiment en C++, on la retrouve par contre en Java (qui est l� pour pallier au manque d'h�ritage multique si je dis pas de b�tises).
    Donc non tu ne pourras pas passer par autre chose que l'h�ritage d'une class de fonctions non impl�ment�es.

  3. #3
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par d�faut
    Bonjour,

    Je comprend pas trop la question

    Mais je vais essayer de t'�clairer sur les interfaces et les m�thodes virtuel.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class maman
    {
    public:
        virtual int method();
    }
     
    class fille : public maman
    {
    public:
       int method();
    }
    Dans ce cas tu impl�mente les 2 m�thodes.
    Si la m�thode n'est pas ajout� � ta classe fille alors quadn tu vaux utiliser ta classe fille c'est la m�thode de maman qui va �tre �xecut�.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class maman
    {
    public:
        virtual int method()=0;
    }
     
    class fille : public maman
    {
    public:
       int method();
    }
    Dans ce cas tu dois implementer la methode dans la classe fille.
    Tu vas manipuler des type maman et c'est la methode fille qui va �tre execut�.

    Si �a n'a rien a voir avec �a, alors c'est d�pendant de ta conception et dans ce cas c'est a toi d'avoir la rigueur pour impl�menter les m�thodes que tu d�sire.

    Si je ne suis pas clair, n'h�site pas � poser plus de questions.

  4. #4
    screetch
    Invit�(e)
    Par d�faut
    tu peux utiliser les templates

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    template< typename T >
    struct ImplementationForward
    {
        void fonctionA() { return T::fonctionA(); }
        void fonctionB() { return T::fonctionB(); }
    };
    ImplementationForward< Implementation2 > impl;
    // compile seulement si Implementation2 fournit fonctionA et fonctionB.

  5. #5
    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
    Comme Screetch l'indique, la seule solution c'est le template.
    Si l'objet template ne poss�de pas la fonction, la compilation �chouera.
    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 actif
    Inscrit en
    Septembre 2010
    Messages
    73
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Par d�faut
    Merci � tous pour toutes ces informations.

    Du coup je vais utiliser la solution des templates comme screetch le propose.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Outil pour les interfaces sans passer par le code
    Par barchoui dans le forum Dreamweaver
    R�ponses: 2
    Dernier message: 13/01/2009, 14h12
  2. Interface sans JFrame
    Par moomba dans le forum Agents de placement/Fen�tres
    R�ponses: 6
    Dernier message: 07/08/2008, 16h20
  3. Cr�ation d'interface sans Flash MX
    Par wikers dans le forum Flash
    R�ponses: 2
    Dernier message: 11/06/2006, 13h44
  4. Relancer l'interface sans quitter
    Par DefmY dans le forum AWT/Swing
    R�ponses: 1
    Dernier message: 23/05/2006, 15h27
  5. R�ponses: 1
    Dernier message: 03/03/2004, 08h58

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