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 :

[C++] - Nested classes?


Sujet :

C++

  1. #1
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut [C++] - Nested classes?
    Bonjour, je suis en train de lire un livre sur la SL et je viens d'aperçevoir quelque chose que je n'avais jamais vu auparavant : les Nested Template Classes

    Extrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    template <class T>
    class MyClass {
       ...
       template <class T2>
       class NestedClass;
       ...
    };
    Cependant dans le bouquin il ne s'agit que d'un exemple qui montre que les "Nested Classes" peuvent aussi être des templates.

    Quelqu'un pourrait m'éclairer à quoi pourrait servir de déclarer une classe dans une classe? Quel genre d'utilisation peut-on faire avec une classe de ce type? Merci!

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    A créer des itérateurs dans les conteneurs de la STL par exemple.

  3. #3
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Aurais-tu un exemple ou une référence sur cette utilisation? Merci!

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    a- cacher ce qui n'a pas à être exposé
    a.bis- pimpl
    b- rajouter des qualifications/portées
    b.bis- le genre de trucs qui peut se voir en méta-prog
    b.ter- mixin layers.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Les nested classes peuvent être utiles pour définir des objets locaux à la classe sans montrer "à tout le monde" leur existence (quand elle n'a qu'un intérêt pour l'implémentation).

    C'est plus facile à illustrer avec une structure. Perso j'ai eu un cas où je devais travailler avec une clé composée de deux pointeurs que je stocke dans un map<>. Ca me permet de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class myClass {
      private:
        struct key { void* foo; void *bar; };
        map<key,int> listeDesValeurs;
    }
    Comme ça, j'utilise la clé en interne seulement pour récupérer les valeurs associées à chaque pair de pointeur... Après, pourquoi ne pas utiliser une clé plus intellignente: une classe!

    J'espère que ça illustre plus clairement le cas.

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par vdumont
    Aurais-tu un exemple ou une référence sur cette utilisation? Merci!
    std::list et std::list::iterator par exemple.

    Ta question porte sur les nested class en général, ou les nested class template en particulier ?

Discussions similaires

  1. Templates, Nested class & friend functon
    Par Benlev dans le forum Langage
    Réponses: 13
    Dernier message: 27/11/2009, 04h04
  2. Nested class: accéder à son parent
    Par Chii-san dans le forum VB.NET
    Réponses: 5
    Dernier message: 06/06/2007, 13h52
  3. Question de Nested Classes
    Par CaptnB dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2006, 23h06

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