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

Auteur Sujet: Passer une fenêtre en paramètre  (Lu 3958 fois)

0 Membres et 1 Invité sur ce sujet

al3x

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Passer une fenêtre en paramètre
« le: Mars 27, 2014, 10:10:37 pm »
Bonjour,
je débute en programmation, je cherche a afficher un rectangle à l'aide d'une fonction.
Mais je ne sais pas comment passé en paramètre la fenêtre (window) pour qu'elle soit accessible depuis la fonction,
j'ai lus que cela a un rapport avec les pointeurs enfin je pense...
Si quelqu'un peut m'aider.

Le compilateur me donne ceci comme erreur :

main.cpp: In function ‘void afficher_rectangle()’:
main.cpp:11:9: error: ‘window’ was not declared in this scope


 
#include <SFML/Graphics.hpp>

    void afficher_rectangle (void)
    {
        //Déclaration du rectangle
        sf::RectangleShape rectangle;
        rectangle.setSize(sf::Vector2f(50, 50));
        rectangle.setPosition(100, 100);
        rectangle.setFillColor(sf::Color::Red);
        //Dessin du rectangle
        window.draw(rectangle);
    }


int main()
{
    //Déclaration de ma fonction
    void afficher_rectangle (void);

    //Initialisation de la fenêtre
    sf::RenderWindow window(sf::VideoMode(800, 600), "Test rectangle");

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        //appel a la fonction
        afficher_rectangle();

        window.display();
    }
    return 0;
}

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Passer une fenêtre en paramètre
« Réponse #1 le: Mars 27, 2014, 10:41:11 pm »
Salut, si tu débutes en programmation et que tu ne sais pas encore te servir des références et des pointeurs ou passer un paramètre à une fonction alors il vaut mieux commencer par apprendre le langage avant de te lancer dans l'utilisation de la SFML. Car c'est la base de la base là.

Voilà le prototype de la fonction qui prend une sf::RenderWindow en référence, et son utilisation :
void afficher_rectangle(sf::RenderWindow& window) { ... }

 //appel a la fonction
afficher_rectangle(window);

Mais sérieux, connaitre un minimum le C++ est nécessaire pour utiliser SFML. Là tu vas juste bloquer sans cesse sur des trucs de bases et ça sera frustrant et pas efficace.

PS : drôle d'idée d'avoir mis ça dans la section C du forum.

al3x

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : Passer une fenêtre en paramètre
« Réponse #2 le: Mars 28, 2014, 11:46:46 am »
Merci G. ! C'est exactement ce que je cherchais a faire,
enfait je savais pas de quelle type était la fenêtre, comme je pensais que ça ne revoyait pas de valeur j'avais essayer avec void.
C'est vrais que pour les pointeurs c'est pas encore très clair pour moi mais j'y travail.

J'avais hésité a poster dans le section fenêtrage du forum, mais je trouvais que ça relevait plus du C.

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Passer une fenêtre en paramètre
« Réponse #3 le: Mars 29, 2014, 06:20:50 am »
Comment c'est possible de ne pas connaitre le type de la fenêtre alors que tu la déclares toi-même ici :
sf::RenderWindow window(sf::VideoMode(800, 600), "Test rectangle");
?
Ce que tu dis là me semble vachement confus. :P

En quoi ton code C++ relève du C ?  ???
SFML est de base en C++, les sous-forums C Java etc. sont utilisés pour les versions de SFML correspondant à ces langages. Donc en gros si tu as un problème avec CSFML ou JSFML tu viens sur ces forums. Si c'est dun problème avec la version C++ de SFML c'est sur les autres forums que ça se passe ;)
(en l'occurence c'est surtout un problème de manque de bases de C++ là :p )