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

Auteur Sujet: Fonction d'affichage de texture  (Lu 2641 fois)

0 Membres et 1 Invité sur ce sujet

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Fonction d'affichage de texture
« le: Novembre 04, 2016, 09:53:06 pm »
Bonjour/Bonsoir
Je viens vers vous car j'ai un petit soucis ^^
Pour commencer je code en C
 J'ai un tp a faire et il faut utiliser des fonctions au maximum , pas de soucis la dessus je m'en sort ^^
Mais je n'arrive pas a la coder correctement j'ai l'impression

void sfSprite* Charger_images(char* _sNom)
{
   sfSprite* Charger_images
   sfTexture_createFromFile(_sNom, NULL);
   projet = sfSprite_create();
   sfSprite_setTexture(projet, texture, sfTrue);

}
sans le void visual studio me dit que ma fonction ne retourne pas de valeur , avec un return 0; ma fenêtré plante ou plutôt cesse de fonctionner , donc j'ai naturellement ajouter le void , mais alors c'est mon sfSprite* Charger_images qui en fait les frais.

Y a t-il un autre moyen que le void pour faire en sorte de ne pas avoir a renvoyer de valeur ? car bloquer dès le début du projet c'est galère et je pense que c'est moi qui m'y prend mal mais je n'ai pas trouvé d'autre astuce

Pour info je n'ai pas encore appris les pointeurs ^^
« Modifié: Novembre 04, 2016, 09:58:12 pm par Deathtreak »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Fonction d'affichage de texture
« Réponse #1 le: Novembre 04, 2016, 11:35:26 pm »
Tu mets pas de point virgule à la fin de la 1ere ligne à l'intérieur de ta fonction ?

Deathtreak

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Fonction d'affichage de texture
« Réponse #2 le: Novembre 05, 2016, 10:14:00 am »
Petit oublie a force de changer tout pour régler le problème , au final j'ai tester en faisant

sfSprite* Charger_images(char* _sNom)
{
   sfSprite* sprite;
   sfTexture* texture;
   texture = sfTexture_createFromFile(_sNom, NULL);
   sprite = sfSprite_create();
   sfSprite_setTexture(sprite, texture, sfTrue);
   return sprite;
}

donc en faisant un return du sprite , sa fonctionne , mais je ne comprend pas ce que cela renvoie de return le sprite justement , si quelqu’un peut m'éclairer car réussir sans comprendre non merci .

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Re : Fonction d'affichage de texture
« Réponse #3 le: Novembre 09, 2016, 02:43:59 am »
La signature de ta fonction
sfSprite* Charger_images(char* _sNom)
montre qu'elle renvoie un pointeur vers un sfSprite, c'est à dire l'adresse d'un sfSprite

Dans ta fonction tu crées un pointeur vers un sfSprite, tu lui appliques une texture et tu renvoies ce pointeur, c'est-à-dire une adresse vers un sfSprite. Ta fonction renvoie bien un sfSprite* (l'adresse d'un sfSprite).

Après je ne connais pas le binding CSFML, donc je sais pas s'il faut que tu fasses une allocation mémoire avec malloc pour renvoyer une adresse qui n'a pas été désallouée à la fin de ta fonction (et qui peut donc contenir n'importe quoi et faire planter ton programme), ou si c'est la fonction sfSprite_create() qui s'en charge.