Bonjour,
Je reprend la programmation en C++, après quelques années ! Cependant j'ai un souci étrange. Tout tient dans un fichier donc ça va être rapide !
sf::Sprite sprite;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #include <SFML/Graphics.hpp> #include <SFML/Window.hpp> sf::Sprite loadSprite() { sf::Texture texture; texture.loadFromFile("data/loader.png"); sf::Sprite sprite; sprite.setTexture(texture); return sprite; } void loader(sf::RenderWindow &window, sf::Sprite sprite) { window.draw(sprite); } int main() { sf::RenderWindow window(sf::VideoMode(800, 600), "My window"); window.clear(sf::Color::Black); sf::Sprite sprite; sprite = loadSprite(); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(sf::Color::Black); loader(window, sprite); window.display(); } return 0; }
sprite = loadSprite();
Je souhaiterais que loadSprite renvoie un pointeur afin d'avoir le sprite disponible dans le main. Cependant en rajoutant une * devant le nom de la fonction, j'ai cette erreur :
main.cpp:33:12: error: cannot convert ‘sf::Sprite’ to ‘sf::Sprite*’ in assignment
Autrement, le code tel qu'il est écrit plus haut compile bien. Mais pendant l'execution je me retrouve avec l'emplacement de la texture (un rectangle) blanc. Pas d'image dedans. C'est très étrange car la taille du rectangle correspond à celle de l'image... Je précise qu'en plaçant le contenu de loadSprite() dans le main à l'emplacement de l'appel de la fonction loadSprite(), tout fonctionne comme je veux.
J'ai sans doute des bases à revoir, mais là j'avoue ne pas savoir où chercher
Merci à vous !
Partager