Bonjour à tous,
Je travaille sur un petit projet de jeu type Pong en C++ avec la bibliothèque SFML 3 (version debug).
À chaque exécution du programme depuis Visual Studio, une exception non gérée est levée à cette ligne dans mon fichier main.cpp (ligne 48) :
const FloatRect textRect = m_label.getGlobalBounds();
Et le message d’erreur est :
> Exception non gérée à 0x603B6207 (sfml-graphics-d-3.dll) dans Projet jeux pong avec la SFML.exe : 0xC0000005 : Violation d'accès lors de la lecture de l'emplacement 0xFAF0F505.
La ligne incriminée se trouve dans une méthode setPosition d’une classe qui contient un sf::RectangleShape (m_rect) et un sf::Text (m_label).
Ce que j’ai vérifié :
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 void setPosition(Vector2f position) { try { m_rect.setPosition(position); const FloatRect textRect = m_label.getGlobalBounds(); Vector2f scaleFactor(0.6f * m_rect.getSize().x / textRect.width, 0.6f * m_rect.getSize().y / textRect.height); if (scaleFactor.x < 1 || scaleFactor.y < 1) m_label.setScale(scaleFactor); m_label.setPosition({ position.x + (position.x + m_rect.getSize().x - m_label.getGlobalBounds().width) / 2, position.y + (position.y + m_rect.getSize().y - m_label.getGlobalBounds().height) / 2 }); } catch(std::exception const& e) { std::cerr << "ERREUR : " << e.what() << std::endl; } }
-m_label a bien un texte assigné (non vide)
-Une police de caractères (arial.ttf) est bien chargée avec m_label.setFont(...) (pas de message d’erreur à ce niveau)
Le programme compile correctement, mais plante systématiquement à l’exécution sur cette ligne
Même avec des vérifications if (textRect.width == 0) etc., l’erreur persiste
Informations supplémentaires :
Visual Studio 2022
Debug mode
SFML 3.0.0 (build debug et les DLL correspondantes)
Windows 10
Je suis un peu bloqué, je soupçonne une mauvaise initialisation du sf::Text ou de la police, mais je n'arrive pas à identifier la cause exacte.
Merci d'avance pour toute aide ou piste*de*débogage*!
main.cpp
Partager