Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Pourquoi sf::Event event dans le while de frame ? [résolu]  (Lu 2003 fois)

0 Membres et 1 Invité sur ce sujet

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
Pourquoi sf::Event event dans le while de frame ? [résolu]
« le: Août 16, 2018, 10:32:06 pm »
Bonsoir la communauté,

Je me pose une question en étudiant les tutoriels quand je lis le code qui suit :
 while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
 

Pourquoi instancier un sf::Event à chaque frame (dans la boucle while) et non une seule fois (i.e. avant le while) ?
Ça m'intrigue...

Rick.

« Modifié: Août 23, 2018, 10:48:03 am par Rick_Cplusplus »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re: Pourquoi sf::Event event dans le while de frame ?
« Réponse #1 le: Août 17, 2018, 06:35:16 am »
sf::Event est un type POD : il n'a pas de constructeur et ses membres sont tous des (aggrégats de) types primitifs. Par conséquent, instancier un sf::Event n'implique strictement aucun code, c'est juste une réservation de place sur la pile, qui se traduit après compilation par une unique instruction CPU. Il n'y a donc aucun intérêt à déclarer un sf::Event ailleurs que là où en a besoin.
Laurent Gomila - SFML developer

Rick_Cplusplus

  • Newbie
  • *
  • Messages: 34
    • Voir le profil
    • E-mail
Re: Pourquoi sf::Event event dans le while de frame ?
« Réponse #2 le: Août 23, 2018, 10:47:22 am »
Merci Laurent,

Je ne jurerai pas avoir tout compris de la réponse (les POD notamment) ; mais je comprends que c'est aussi "économique" d'instancier un POD au moment du besoin (et même dans une boucle) qu'en amont de la ladite boucle parce qu'instancier un POD c'est juste réserver de la place sur la pile.

Et faire ainsi assure la lisibilité du code. :)

Rick.

 

anything