Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: Rick_Cplusplus le Août 16, 2018, 10:32:06 pm

Titre: Pourquoi sf::Event event dans le while de frame ? [résolu]
Posté par: Rick_Cplusplus 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.

Titre: Re: Pourquoi sf::Event event dans le while de frame ?
Posté par: Laurent 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.
Titre: Re: Pourquoi sf::Event event dans le while de frame ?
Posté par: Rick_Cplusplus 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.