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 :

Réorganiser fonctions traitement variable statique dans une classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Septembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 43
    Par défaut Réorganiser fonctions traitement variable statique dans une classe
    Bonjour à tous,

    Je me retrouve avec un projet où une classe A gère un tas d'objet de classe B utilisant une variable statique V.
    La variable statique est déclarée dans B. Les fonctions de traitement associées à V sont dans B.
    La classe A utilise les fonction de traitement associées à V.

    Tout fonctionne mais le code est maintenant moche à lire.

    Mon souci est que je souhaiterai déplacer les fonctions de traitement associées à V qui sont dans B ailleurs que dans B.
    J'ai mon idée mais je souhaiterai avoir la votre.

    Pour être plus clair, je schématise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class B {
    public :
     B(params);
     ~B();
     void fonctionDeTraitement1(params);
     void fonctionDeTraitement2(params);
     plein d'autres choses 
     ... 
     static creerV();
     static modifieV();
     static resetV();
     static updateV();
    private:
     plein de variables distinctes
     ...
     static var V;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class A {
    public:
     A(params);
     ~A();
     void fonctionDeTraitement1(params);
     void fonctionDeTraitement2(params);
     plein d'autres choses 
      ...
      accesCreerV();
      accesModifieV();
      accesResetV();
      accesUpdateV(); 
      ...
    private:
      plein de variables
      ...
      B[150] mesB;
    }
    Les fonctions accesCreerV() sont des simples liens de genre B::creerV();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void A::accesCreerV() {
     B::creerV();
    }
    A n'a pas d'accès direct sur V

    Ce que je souhaiterai c'est d'avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class B {
    public :
     ...
    private:
     ...
     static var V;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class C {
    public:
     static creerV();
     static modifieV();
     static resetV();
     static updateV();
    private:
     ...
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class A {
    public:
      ...
      accesCreerV();
      accesModifieV();
      accesResetV();
      accesUpdateV(); 
      ...
    private:
      B[150] mesB;
    }

    Comment relier tout le monde entre eux ?


    En vous remerciant par avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Quelque chose est perturbant dans le code que tu donnes.
    B contient un champ statique donc unique. Ta classe B ne semble même qu'avoir des choses statiques donc n'a pas d’existence propre.
    D'où B[150] mesB; n'est jamais que 150 fois exactement la même chose!
    Il y a donc une seule var V et pourtant des tas de fonctions partout pour la modifier. Je décroche.

    Peut-être qu'avec des noms plus explicite que A, B, C et var, on pourrait donner une réponse plus globale à la structure de ton code.

    Maintenant si ton seul problème est de n'écrire que ce qui est nécessaire, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class A {
    public:
      ...
      accesCreerV()const  { B::accesCreerV(); }
      accesModifieV()const { B::accesModifieV(); }
      accesResetV()const  { B::accesResetV(); }
      accesUpdateV()const { B::accesUpdateV(); } 
      ...
    private:
      B[150] mesB;
    }

  3. #3
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Septembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 43
    Par défaut
    Désolé pour la réponse tardive.
    Le projet est (trop) gros pour être exposé simplement, mais je m'excuse vraiment de ne pas avoir transcrit ce qu'il vous fallait pour mieux vous aiguiller.

    La classe A gère bien 150 objets B distincts ...

    Aussi j'ai modifié mon post de départ pour rendre le problème plus clair.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Si tu veux juste déplacer des trucs static ailleurs je vois pas bien où le problème se trouve ?
    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 confirmé
    Profil pro
    Enseignant
    Inscrit en
    Septembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 43
    Par défaut
    Cela doit être psychologique !

    Juste que je trouvais embêtant d'avoir des fonctions statiques qui agissaient sur la variable V définies dans la classe B alors qu'elles auraient pu être définies ailleurs afin de ne pas "polluer" la classe B

    Mais si cela ne vous choque pas vous qui êtes des pros, alors je ne m'en fais plus moi non plus !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Si c'est très choquant et mauvais d'avoir des trucs inutiles qui polluent B.
    Enfin, à priori, parce qu'on sait pas trop ce que tu manipules mais quand j'entends parler de 150 variables B... ça fait pas envie.
    Mais ça n'a rien de difficile qui requiert quelconque aide de les déplacer... faut juste user de ses touches ctrl-c et ctrl-v.
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel Variable statique dans une autre classe ?
    Par noula_27 dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2013, 23h06
  2. [1.x] déclarer variables statiques dans une classe controller
    Par flora806 dans le forum Symfony
    Réponses: 8
    Dernier message: 15/10/2012, 17h26
  3. Réponses: 5
    Dernier message: 22/06/2009, 11h02
  4. Réponses: 14
    Dernier message: 05/09/2006, 01h17
  5. [Tableaux] Probleme variable statique dans une classe
    Par Joe Le Mort dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 11h35

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