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 :

Disjonction dans une classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Par défaut Disjonction dans une classe
    Bonsoir,

    Je souhaiterai créer une classe présentant une disjonction, c'est à dire :

    class Element
    {
    Soit un élément du type1
    Soit un élément du type2
    }

    Par exemple, pour créer une liste récursive c'est soit une liste vide soit un couple (valeur, queue de la liste)

    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ce que tu recherches correspond aux unions.

    Après, quant à savoir si c'est une bonne idée pour ce que tu souhaites faire, ça j'en suis moins sûr... Je ne pense pas que ce soit la bonne approche en C++.

  3. #3
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut Re: Disjonction dans une classe
    Citation Envoyé par doudounico
    Bonsoir,

    Je souhaiterai créer une classe présentant une disjonction, c'est à dire :

    class Element
    {
    Soit un élément du type1
    Soit un élément du type2
    }

    Par exemple, pour créer une liste récursive c'est soit une liste vide soit un couple (valeur, queue de la liste)

    Merci de votre aide
    Ouep comme Loulou a dit, c'est les unions. Mais j'pense que c'est pas adapté.

    On dirait que t'as fait du CAML toi.
    Moi j'avais fait des "types unions" au sens de CAML, en C++, pour des arbres binaires, avec des pointeurs et des fonctions inline pour la commodité d'utilisation.


    Note (si c'est pour faire une liste) :
    En C++ ya des listes chaînées bi-directionnelles (je crois), celles de la STL que tu peux utiliser avec l'entête <list>, qu'on manipule itérativement en général.
    Sinon il y a Functional C++ qui implémente les listes avec une tête et une queue, grâce à la méta-programmation.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 23
    Par défaut
    Oui j'ai fais du caml, et je crois que le typage caml est l'un des plus performants non ?

    En tout cas, il est le plus clair.

    Mais en C++ qu'est ce qui correspond le mieux aux Unions ?

    Merci

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le problème avec CamL, c'est que ce n'est pas du tout le même paradigme de programmation que le C++ (bien qu'on puisse s'en rapprocher en C++, ce n'est pas la façon "naturelle" de programmer avec ce langage).

    Une liste sera typiquement implémentée comme une succession de noeuds pointant les uns vers les autres, la fin étant designée par un pointeur NULL. En clair, la fin de liste se distinguera par une valeur spécifique, pas par un type différent.

  6. #6
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Le plus performant, je sais pas, parmi les meilleurs, surement.

    Sinon tu peux regarder FC++ comment ils font, mais j'ai pas regardé le code moi =P

    http://www.cc.gatech.edu/~yannis/fc++/

    Dans ce lien, au début, ils te montrent comment ils utilisent les listes à eux :

    http://www.cc.gatech.edu/~yannis/fc++/fc++-sigplan.pdf

    Citation Envoyé par Loulou24
    Le problème avec CamL, c'est que ce n'est pas du tout le même paradigme de programmation que le C++ (bien qu'on puisse s'en rapprocher en C++, ce n'est pas la façon "naturelle" de programmer avec ce langage).
    Disons plutôt que CamL permet de faire des choses C++ ne permet pas

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/07/2005, 23h10
  2. classe dans une classe ?
    Par tut dans le forum UML
    Réponses: 23
    Dernier message: 25/06/2004, 15h00
  3. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42

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