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 :

question à propos d'un std::vector encapsuler


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut question à propos d'un std::vector encapsuler
    Coucou

    Je suis face à un "problème" dont je ne suis pas sur d'une méthode propre pour résoudre.

    C'est assez basique, en gros j'ai une class Animation qui contient un std::vector de structures Frame, contenant divers informations concernant la frame à afficher.

    J'avais commencer à coder des fonctions pour définir la taille, les éléments de la structure etc...
    Mais au final je me suis rendu compte que ce que je faisais n'était rien de plus que réimplanter std::vector (en moins bien ), mais je tien vraiment à ce que l'utilisateur de la classe puisse gérer le vector de Frame avec les fonctions que proposes std::vector.

    J'avais penser au final à définir simplement un pointeur vers un std::vector<Frame> ,ainsi l'utilisateur défini son std::vector<Frame> à l'extérieur de la class, il lui envoi l'adresse, et fait ce qu'il veut avec.

    Mais au final cela ne revient-il pas à briser l'encapsulation?

    Je ne sais vraiment plus comment procéder, si vous avez une idée, merci de votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Il est possible de faire une fonction du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<Frame>& getFramesList() { return ...; }
    Qui permettrait donc de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monAnimation.getFramesList().push_back(Frame(parametres));
    C'est déjà moins pire que la solution du pointeur, même si ce n'est pas génial non plus


    Si ta classe Animation n'est vraiment que une liste de Frames, tu peux aussi faire tout simplement : typedef std::vector<Frame> Animation;

    Mais le mieux je pense est encore de définir des fonctions similaires à celles du vector, comme ça tu peux filtrer l'entrée (ce qui peut être utile pour faciliter la tâche des fonctions de dessin)

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    En effet, l'organisation de ta classe pour stocker les frames doit rester interne afin que pour x ou y raison tu souhaites la changer, l'utilisateur n'ai rien a modifier.

    Quelles actions l'utilisateur doit pouvoir faire sur cette liste ?

Discussions similaires

  1. Question à propos de virtual method et de Vector
    Par Ryu2000 dans le forum Débuter
    Réponses: 10
    Dernier message: 01/11/2012, 12h07
  2. Question a propos de multiplication matrix/vector
    Par agatte dans le forum MATLAB
    Réponses: 1
    Dernier message: 05/12/2011, 18h34
  3. Réponses: 18
    Dernier message: 19/08/2011, 16h21
  4. Question sur std::vector
    Par FabaCoeur dans le forum SL & STL
    Réponses: 11
    Dernier message: 24/06/2007, 18h22
  5. [STD::Vector] - Question
    Par buzzkaido dans le forum SL & STL
    Réponses: 2
    Dernier message: 01/02/2007, 17h45

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