Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Pourquoi sf::Event event dans le while de frame ? [résolu]  (Read 6828 times)

0 Members and 1 Guest are viewing this topic.

Rick_Cplusplus

  • Newbie
  • *
  • Posts: 34
    • View Profile
    • Email
Pourquoi sf::Event event dans le while de frame ? [résolu]
« on: August 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.

« Last Edit: August 23, 2018, 10:48:03 am by Rick_Cplusplus »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re: Pourquoi sf::Event event dans le while de frame ?
« Reply #1 on: August 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
  • *
  • Posts: 34
    • View Profile
    • Email
Re: Pourquoi sf::Event event dans le while de frame ?
« Reply #2 on: August 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.