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 :

créer un vector<struct>


Sujet :

C++

  1. #21
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    la ma notre
    On est au - 2 sur ce fil mais je suis persuadé qu'en fouillant dans ce site ou dans d'autre, la cohorte serait vite dépassée.
    +1
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #22
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par oodini Voir le message
    Dans le programme présenté dans le post original, explique-moi quelle est la contre-indication.
    La question ne porte même pas sur l'encapsulation, aucune donnée métier n'est donnée, et il n'y est pas fait question d'invariant.
    Même dans une version simplifiée du code, il y a fort à parier que l'id est lié au label. Si ce n'est pas le cas, autant utiliser std::pair<> (qui est une structure, d'ailleurs). Si c'est le cas (par exemple, l'information peut provenir d'une base de données, auquel cas le lien entre id et label est quand même relativement fort - changer id peut n'avoir aucun sens, et changer label sans changer id peut rendre les données incohérentes avec la base, auquel cas il faudra resynchroniser.

    Histoire d'être sûr de ce dont on parle : structure = classe sans méthode dont toutes les données sont publiques.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #23
    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 3DArchi Voir le message
    L'absence d'invariant d'un type, le cas où l'encapsulation semble effectivement moins forte, est très rare. Et qui plus est, ces types 'triviaux' ont rapidement vocation à être encapsulés dans des types plus riches.
    http://alp.developpez.com/tutoriels/traitspolicies/

    Citation Envoyé par Emmanuel Deloget Voir le message
    Même dans une version simplifiée du code, il y a fort à parier que l'id est lié au label. Si ce n'est pas le cas, autant utiliser std::pair<> (qui est une structure, d'ailleurs).
    Ben voilà. Tout est dit. :-)

  4. #24
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Ca c'est de la mauvaise foi. L'utilisation des traits n'a rien à voir avec l'encapsulation.

    Citation Envoyé par oodini Voir le message
    Ben voilà. Tout est dit. :-)
    Enfin, il y a une condition quand même - et crois moi, elle est pétard de forte !
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #25
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par oodini Voir le message

    Ben non. Rien n'est dit.

    Et les classes traits et politiques ont aussi des parties privées lorsqu'elles deviennent un tantinet évoluées et qu'elles ont des 'détails' d'implémentation.

    Ce qui est public ne sont pas des données ou des détails d'implémentation qui ne seraient pas encapsulées mais l'équivalent des fonctions

  6. #26
    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 Emmanuel Deloget Voir le message
    Ca c'est de la mauvaise foi. L'utilisation des traits n'a rien à voir avec l'encapsulation.
    Je suis tout à fait d'accord : on n'a pas forcément besoin de parler encapsulation dès qu'on parle structures.

    Citation Envoyé par 3DArchi Voir le message

    Ben non. Rien n'est dit.

    Et les classes traits et politiques ont aussi des parties privées lorsqu'elles deviennent un tantinet évoluées et qu'elles ont des 'détails' d'implémentation.
    Je suis d'accord. Mais le code à l'origine de ce fil ne présente pas une structure évoluée, pour le coup.

  7. #27
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par oodini Voir le message
    Je suis tout à fait d'accord : on n'a pas forcément besoin de parler encapsulation dès qu'on parle structures.
    AMHA, ce n'est pas vraiment ce qu'Emmanuel voulait dire...

    Je crois qu'il voulait surtout dire que le fait est que les trait de politique utilisent essentiellement des constantes, qui seront d'ailleurs souvent des constantes de compilation.

    A partir de là, il devient relativement inutile de commencer à encapsuler les données (qui ne pourront de toutes façons pas être modifiées), et ce, d'autant plus que l'on devra y accéder de manière régulière.
    Je suis d'accord. Mais le code à l'origine de ce fil ne présente pas une structure évoluée, pour le coup.
    Ah, tu trouve, toi

    Prends simplement la peine de réfléchir à tout ce que cette "simple" structure peut nécessiter en terme de gestion :
    1. id est, classiquement, un identifiant que l'on veut unique et non ambigu : comme je l'ai indiqué, la modification de l'id fait, de facto, passer à un autre objet
    2. Les tests et les recherches seront, visiblement, basées sur id, vu qu'il sera sans doute unique et non ambigu: il sera sans doute de bon ton de prévoir, au minimum, la comparaison a < b avec a et b étant des dummy
    3. label semble clairement destiné à représenter une chaine de caractères: il vaut clairement mieux faire en sorte que seule Dummy soit responsable de la gestion de la mémoire qui s'y rapporte
    Et ce ne sont là que les points les plus importants auquels j'aie pu penser durant la compilation d'un projet au boulot
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #28
    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 koala01 Voir le message
    [LIST=1][*]id est, classiquement, un identifiant que l'on veut unique et non ambigu : comme je l'ai indiqué, la modification de l'id fait, de facto, passer à un autre objet
    Tu fais une présupposition non donnée dans le post.

    Pour info, en France, même le numéro INSEE se modifie.

  9. #29
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par koala01 Voir le message
    AMHA, ce n'est pas vraiment ce qu'Emmanuel voulait dire...

    Je crois qu'il voulait surtout dire que le fait est que les trait de politique utilisent essentiellement des constantes, qui seront d'ailleurs souvent des constantes de compilation.
    C'est surtout qu'on parle d'une technique de code, et qu'on la met en face d'un principe de conception - les deux n'ont rien à voir l'un et l'autre, donc les mixer n'a pas vraiment de sens. Il existe une raison - triviale - pour laquelle les traits sont généralement des structures et pas des classes, même si, comme l'a remarqué 3DArchi, une classe avec des méthodes privées devient vite intéressante lorsque le traits se complexifie.

    Prêt pour la raison ?

    Dans 99% des cas, les traits sont stateless. Sans état à protéger, il est inutile d'encapsuler quoi que ce soit. Ce sont des constantes glorifiées.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Créer un Vector multi_types
    Par bowow dans le forum C++
    Réponses: 16
    Dernier message: 03/05/2015, 15h52
  2. [Débutant] Créer un tableau de struct
    Par TopCao dans le forum MATLAB
    Réponses: 11
    Dernier message: 17/02/2010, 17h30
  3. Réponses: 12
    Dernier message: 23/03/2006, 14h13
  4. lire fichier et créer vector
    Par belukrin dans le forum MFC
    Réponses: 6
    Dernier message: 18/02/2006, 01h21
  5. mettre un struct dans un vector
    Par Biosox dans le forum SL & STL
    Réponses: 2
    Dernier message: 02/02/2006, 16h34

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