CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Valider les arguments constructeur

Bintux
Bintux
Niveau 1
24 octobre 2013 à 16:47:51

Bonjour, j'ai une question sur le C++ et les constructeur dans les classes.

J'aimerais savoir le meilleur moyen de valider les données passé en paramètre au constructeur.
Je suppose qu'il est impossible d'utiliser les listes d'initialisations et qu'il faut le faire directement dans le constructeur ? C'est-à-dire, valider les données, si elles sont valides les affecter aux données membre et dans le cas contraire lancer une exception.

Je suppose aussi qu'il y a moyen d'utiliser des méthodes Set validant et affectant aux données membre ce qu'il leur est passé en paramètre ? Un peu à la façon des propriétés en C# par exemple.

Merci de votre aide ! :)

godrik
godrik
Niveau 30
24 octobre 2013 à 16:58:48

Quasiment tout pareil qu'en C# sauf qu'il n'y a pas automatiquement des set/get associe aux champs.

Aussi fais attention avec les exceptions dans les cknstructeurs en c++. La syntaxe peut etre un peu bizzare. Lis la faq c++ du newsgroup qui va bien.

Bintux
Bintux
Niveau 1
24 octobre 2013 à 17:33:24

Merci pour la réponse rapide ! :)

Je suis aussi allé lire sur les exceptions dans les constructeurs, ça va certainement m'éviter bien des problèmes.

godrik
godrik
Niveau 30
24 octobre 2013 à 19:01:31

Je ne me rappelle jamais des details outre le conseil central: "pas d'exception dans les constructeurs, ca t'evitera bien des problemes." :)

DeeplyDead
DeeplyDead
Niveau 9
24 octobre 2013 à 21:07:22

Tu dois vouloir parler des destructeurs. Lancer une exception dans un constructeur, ça peut être une façon raisonnable de signaler que la construction a échoué si le code est pensé pour. En tout cas ça paraît mieux que de tester si la construction s’est bien passée après coup, sauf sans doute dans certain cas précis.

godrik
godrik
Niveau 30
24 octobre 2013 à 21:18:22

DeeplyDead, nan, je parle bien des constructeurs. C'est tres complique de savoir exactement ce qui est proprement construit et donc de savoir precisement ce qui doit etre detruit. Du fait de leur complexite, les implementations des exceptions dans les constructeurs sont souvent bugger. Donc je prefere m'en tenir le plus loin possible.

Mais je suis d'accord que c'est semantiquement utile.

Bintux
Bintux
Niveau 1
25 octobre 2013 à 02:37:22

Il me semble moi aussi d'avoir lu de ne pas lancer d'exception dans les destructeurs, mais pour les constructeur éviter le plus possible ou bien le gérer correctement. :o))

godrik
godrik
Niveau 30
26 février 2014 à 20:50:47

Je dois dire que les exceptions en C++ sont sont suffisement complexe pour que j'ai une relation etrange avec. Je suis sur que ca peut etre tres utile, mais je suis toujours un peu hesitant.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment