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 :

Un question sur les classes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut Un question sur les classes
    Bonjour,

    Si une fonction membre d'une classe a besoin d'un tableau de structures de données par exemple, où le définissez-vous (sachant que ce tableau doit resté privé) , puisqu'il n 'est pas possible de le faire dans le corps de la classe ?


    Willy.

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Si le tableau n'est utile qu'a la fonction, déclare le dans la fonction.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  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
    Ça dépend de la fréquence d'appel de la fonction, non ?

    Parfois, il vaut mieux s'économiser des allocations.

  4. #4
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    +1 pour oodini.

    Je dirais que tout dépend de l'utilisation du tableau.
    willycat, Est-ce qu'il serait possible d'avoir plus de précision du contexte?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    Bonjour,

    en fait, c'est plus une question d'ordre général plutôt que relative à un contexte en particulier. Il n'y a pas si longtemps que j'ai débuté en c++ et j'arrive à un stade où, dans mon projet récemment commencé, je me pose la question de savoir où définir les données utilisées par les fonctions membres d'une classe, puisque dans la définition de la classe, cela n' est pas possible (sauf pour des données entières déclarées "static const") et que ces données doivent rester privées.

    Par exemple, soit une classe "terminal_t" pour la gestion d'un terminal disposant de membres privées et de fonctions membres privées et publiques dont deux d'entre-elles permettent l'envoie et la réception de caractères. Pour leur fonctionnement, ces fonctions ont besoin de tableaux de données comme des tableaux de caractères ASCII et d'autres pour la reconnaissance des codes de contrôle. Or, où les définir sachant que ces données sont utilisées par plusieurs fonctions membres et qu'elles doivent être privées ?

    Actuellement, je songe à cette solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class terminal_t
    {
      ...
      const mystruct *ptr;
      ...
    };
     
    terminal_t::terminal_t()
    {
      static const mystruct data[] = { ... };
     
      ptr = data;
    }
    mais je trouve cette solution un peu bancale. Qu'en pensez-vous ?

    Merci,

    Willy.

  6. #6
    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
    Citation Envoyé par willycat Voir le message
    je me pose la question de savoir où définir les données utilisées par les fonctions membres d'une classe, puisque dans la définition de la classe, cela n' est pas possible
    Comment ça ? Pourquoi cela ne serait-il pas possible ? C'est le principe de l'encapsulation.
    Y'a quelque chose que j'ai dû mal comprendre... :-/

  7. #7
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    je ne sais pas si cela peut aider et que j'ai bien compris ce que tu as écris, mais le fait qu'un attribut soit privé n'a pas d'importance à l'intérieur de la classe. Ainsi une méthode de la même classe peut accéder sans problème à la donnée membre privé.

    Ainsi, un scénario classique :
    définition d'un tableau privé dans la classe,
    Le constructeur ou une méthode d'initialisation permet d'initialiser le tableau,
    La ou les fonctions ayant besoin du tableau l'utilise.
    Ceci permet d'avoir une certaine souplesse pour l'initialisation qui peut se faire dynamiquement (lecture d'un fichier, entrée utilisateur, données calculées, ...) et évite d'écrire en dur dans le programme.

    Y a t'il un intérêt particulier à avoir un tableau static const ?

  8. #8
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Citation Envoyé par oodini Voir le message
    Ça dépend de la fréquence d'appel de la fonction, non ?

    Parfois, il vaut mieux s'économiser des allocations.
    Pas si le tableau en question est constant. Si c'est pas le cas effectivement mieu vaut l'avoir en membre.

  9. #9
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Nope. Das ce cas un tableau static const local à la fonction est plus approprié.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  10. #10
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Nope. Das ce cas un tableau static const local à la fonction est plus approprié.
    D'un point de vue implémentation par le compilateur, ça ne reviens pas au même?

Discussions similaires

  1. Question sur les classes (car problème lors de la compilation)
    Par beegees dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 09/10/2009, 17h23
  2. question sur les classes "static"
    Par Asmod_D dans le forum C++
    Réponses: 4
    Dernier message: 05/04/2009, 17h27
  3. Questions sur les classes.
    Par Lartiste007 dans le forum Débuter
    Réponses: 4
    Dernier message: 05/04/2009, 14h46
  4. Questions sur les classes.
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/02/2009, 09h21
  5. Questions sur les classes en C#
    Par greg2 dans le forum C#
    Réponses: 11
    Dernier message: 05/11/2007, 19h57

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