Bonjour,

J'ai presque finalisé une class Texte qui permet de simplifier les tâches courante d'écriture de texte en SDL.
Voila les grandes lignes de la class pour les curieux:

Variables privées:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
char *texte; // Le texte
TTF_Font *font; // La police d'écriture
char *font_name; // Le nom de la police
SDL_Color couleur; // La couleur
int taille; // La taille
SDL_Surface *surface; // Surface associée au texte
Méthodes principales:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
/* ... constructeurs / destructeur ... */
/* ... tous les modificateurs / accèsseurs nécessaires ... */
 
// Générer la surface
SDL_Surface* generer_solid();
SDL_Surface* generer_shaded(SDL_Color bgcolor);
SDL_Surface* generer_blended();
 
// Blitter la surface générée sur une surface
void blitter(SDL_Surface* &ecran, int x, int y);

La class fonctionne correctement mis à part une méthode: set_font()
Comme vous avez pu le deviner, elle charge une nouvelle font:
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
// Modifie la font
void Texte :: set_font(char *font_name) {
 
	if(font_name == NULL) {
		this->font == NULL;
		return;
	}
 
	cerr << "[DEBUG] set_font() - font_name = " << font_name << endl;
	this->font = TTF_OpenFont(font_name, this->taille);
 
	if(this->font == NULL) {
		cerr << "[DEBUG] set_font() - TTF_OpenFont() = NULL" << endl;
		return;
	}
 
 
	// Mise a jour du nom de la font
	if(this->font_name != NULL)
		delete[] this->font_name;
 
	this->font_name = new char[ strlen(font_name)+1 ];
	strcpy(this->font_name, font_name);
}
Lorsque j'appelle cette fonction depuis mon constructeur avec this->set_font(font_name), l'ouverture avec TTF_OpenFont() échoue, tandis que quand je l'appelle en tant que méthode directement l'ouverture fonctionne.

Quand je vais voir dans cerr.txt, je me rends compte que le paramètre font est bien égal à "fonts/arial.ttf" dans les deux cas (la font est bien à cet emplacement) mais malgré cela l'ouverture échoue uniquement si je suis dans le constructeur.
Note: dans les deux cas this->font vaut la même valeur.

Et donc je ne comprends pas du tout comment débugger ce problème.