Bonjour tous le monde !
Depuis hier soir j'ai un petit problème avec un projet "semi"-pro: étudiant en apprentissage, j'ai recherché pour un projet un logiciel pour afficheur (qui permet d'afficher des informations, le même type de logiciel dans les pizzerias et cie).
J'ai un niveau plutôt correct en c++ et j'ai donc décidé de le coder avec sfml pour un test interne.
En ce qui concerne la structure globale, j'ai un classe Slide qui représente un écran avec 2 vector pour les textes et les images (sf::Text et sf::Sprite), une autre PlayerEngine qui s'occupe de lire pour le moment un fichier json.
Lorsque le "parser" rencontre un élément "texte", j'ajoute dans le vector un sf::Text qui est retourné par une fonction (cf code suivant).
Le problème survient après dans une autre boucle lorsque j'essai de le dessiner grâce à la méthode draw (window.draw(element) ): une violation de lecture se passe à ce moment depuis que j'ai rajouté le setFont dans la fonction (cf #2) ... A ce que j'ai vu sur internet, le vector perd les pointeurs qui lui sont envoyé par la suite ...
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 switch(elements[j]["type"].GetInt()) { //Gestion du type case Element::Texte: slide.addText(getText(elements[j]["text"].GetString(), elements[j]["size"].GetInt(), pos)); break; case Element::Image: slide.addSprite(getSprite(elements[j]["image"].GetString(), pos)); break; } //... sf::Text PlayerEngine::getText(const std::string& text, int characterSize, sf::Vector2f pos) { sf::Text temp; sf::Font arial; // #2 arial.loadFromFile("arial.ttf"); //#2 temp.setFont(arial); //#2 temp.setString(text); temp.setCharacterSize(characterSize); temp.setPosition(pos); return temp; }Donc après des recherches sur internet, et notamment concernant le choix du conteneur le plus optimisé pour ce que je semblait vouloir faire, (https://user.oc-static.com/files/313...000/313596.png) j'ai remplacé par std::list mais avec le même problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void Slide::Run(sf::RenderWindow &window) { //... for(sf::Text const &t : m_texts) { //On dessine les textes ... window.draw(t); } //...}
Merci d'avance de vos réponses
EDIT: ajout de l'image avec l'erreur
Partager