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

Téléchargez C++ Discussion :

Bibliothèque de gestion d'inventaire


Sujet :

Téléchargez C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut Bibliothèque de gestion d'inventaire
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Bibliothèque de gestion d'inventaire

    Cette bibliothèque header-only propose une classe de gestion d'inventaire.
    La classe inventaire permet d'ajouter et supprimer plusieurs éléments d'un inventaire.
    Un programme d'exemple montre comment on peut s'en servir.

    Je n'ai pas écrit le support des fichiers, peut-être dans une autre version.

    Le code est conçu pour servir d'exemple.
    Il introduit donc un certain nombre de concept classique qui servent habituellement.

    • méthodes constantes d'une classe
    • argument passé par référence constante
    • constructeur par défaut et liste d'initialisation
    • validation d'argument avec ou sans exceptions, selon la gravité
    • try ... catch et std::cerr
    • délégation de méthode (begin() et end())
    • opérateur << vers un ostream
    • formatage de nombre écrit dans un ostream
    • template de méthode
    • template de classe et typedef public
    • usage de typename dans une template de classe
    • garde contre les doubles inclusions.
    • du bon usage du commentaire
    • usage de l'anglais et du français dans un code (l'exemple s'exécute en français)


    Par contre, pas de Doxygen, parce que je ne sais pas en écrire.
    Le code compile pour un (vieux) gcc 4.6.1 avec -std=c++0x -Wall -Wextra

    Qu'en pensez-vous ?

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Par contre, j'ai un problème pour ajouter le code source, je ne sais pas ce qu'il s'y trouve.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Merci à Winjerome pour avoir débloqué la situation des codes sources.

    N'hésitez pas à donner votre avis, il y a probablement des petites choses à améliorer.

  4. #4
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour Leternel,

    Cet exemple est interessant et aborde pas mal de concepts.

    je suis loin d'être le mieux placé pour apporter conseil.. mais bon, j'me lance :

    Peut-être utiliser using au lieu de typedef;

    Je ne sais pas si tu souhaites encore faire evoluer ce code, au cas ou :

    Une fonction pour tout supprimer(n'apprend pas grand chose certe),
    une fonction pour ajouter une liste (template container avec begin et end?!) (aussi en surcharge du constructeur?!)
    enfin peut-être quelques opérateurs histoire de pouvoir faire des choses genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    using Invent = inventory::inventory<item>;
    const Invent inventaire_de_depart = {{"clee", 3}, {"boite", 1}};
     
    Invent  inventaire_joueur_un(inventaire_de_depart);
    const Invent  craft_pioche = {{"clee", 2}}
     
    inventaire_joueur_un -= craft_pioche;
    En tout cas bonne initiative ! C'est toujours plus sympa d'apprendre les méchanismes avec un petit code, qu'avec une longue page de théorie.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    C'est vrai, mais comme je n'avais qu'un compilateur d'avant le c++11 (on parlait encore de C++0x), je n'avais ni les initializer-list, et pas forcément des using.

    Et il me semble que using ne crée pas un nom.

    Je veux dire par là que le code suivant compile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct s {
        typedef int INTEGER;
    };
    int main() {
        s::INTEGER that = 2;
        return 0;
    }
    mais celui-ci, j'ai eu des problèmes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct s {
        using INTEGER = int;
    };
    int main() {
        s::INTEGER that = 2;
        return 0;
    }
    Je vais voir ce que je peux rajouter.

  6. #6
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    C'est vrai, mais comme je n'avais qu'un compilateur d'avant le c++11 (on parlait encore de C++0x), je n'avais ni les initializer-list, et pas forcément des using.
    OK, je croyais que c++11 et C++0x étaient equivalent (je n'ai pas connu l'avant c++11 ).
    Comptes-tu le convertir en c++11 ? Veux tu que j'ebauche les idées de mon précedent message ?

Discussions similaires

  1. Comment installer la bibliothèque GD - Gestion des dépendances sous Linux et Mac OS
    Par djibril dans le forum Programmation et administration système
    Réponses: 10
    Dernier message: 19/03/2015, 21h26
  2. Gestion d'inventaire, demande d'avis.
    Par Dankin dans le forum Cas d'utilisation
    Réponses: 3
    Dernier message: 10/05/2012, 10h22
  3. Bibliothèque de gestion d'image (voir de vidéo)
    Par Monkey56 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 30/09/2010, 20h34
  4. Bibliothèques de gestion du cache
    Par kaymak dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 02/12/2009, 21h27
  5. Bibliothèque de gestion de mesures (durées, monnaies, etc)
    Par Arnaud_03 dans le forum Général Java
    Réponses: 4
    Dernier message: 27/08/2009, 17h04

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