Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment poser des conditions sur mes attributs ?

Sujet résolu
    3 octobre 2021 à 20:43:02

    Bonsoir à tous, je commence le c++ et je travaille sur les Classes, je suis devant un cas de figure qui me pose problème : ma classe Flacon est définit par son nom, sa masse et son volume, j'aimerai que lorsque je crée un objet flacon, si sa masse dépasse 1kilos, je ne puisse pas crée cet objet:

    Est-il possible d'émettre des conditions (max par exemple) sur un attribut ?

    Dois-je directement agir dans le constructeur dans ce cas là ?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2021 à 21:38:43

      Bonjour,

      Si tu créés ta classe Flacon à partir du code que tu écris, tu peux utiliser la fonctionnalité 'assert();' ( définie dans l'en-tête <cassert> ). Sinon , si tes classes Flacon sont créées en lisant des fichiers il peux être opportun de lancer une exception std::runtime_error .

      Exemple avec l' en-tête cassert:

      #include <cassert>
      
      constexpr unsigned WEIGHT_MAX = 1000;
      
      Flacon::Flacon(unsigned weight_):
          weight{ weight_ }
      {
      
         assert( weight < WEIGHT_MAX );
      }



      -
      Edité par Warren79 3 octobre 2021 à 22:29:33

      • Partager sur Facebook
      • Partager sur Twitter

      Mon site web de jeux SDL2 entre autres : https://www.ant01.fr

        4 octobre 2021 à 10:01:55

        Attention à ne pas faire de votre classe un simple réceptacle à données.

        Une classe est plus un fournisseur de service qu'une pochette surprise.

        Comme les volumes de flacon sont standardisés, il serait peut-être pertinent de faire une énumération des différentes capacités possible et faire du type de l'attribut une instance de cet énumération.

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          11 octobre 2021 à 11:36:06

          ok, merci à vous deux ca m'aide beaucoup
          • Partager sur Facebook
          • Partager sur Twitter
            11 octobre 2021 à 12:41:25

            > j'aimerai que lorsque je crée un objet flacon, si sa masse dépasse 1kilos, je ne puisse pas crée cet objet:

            Bon, ce n'est pas toi qui crée un objet, mais ton programme.

            Et "quand je le fais, je ne peux pas le faire", il y a un léger problème de contradiction interne.

            Reprenons calmement :

            • à un moment ton programme demande la construction d'un objet
            • il est possible qu'elle échoue
            • quand elle échoue, que doit faire le programme ?
            Dans les possibilités
            • fermer boutique immédiatement
            • lever une exception qui est traitée.
            • Partager sur Facebook
            • Partager sur Twitter

            Comment poser des conditions sur mes attributs ?

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown