C++/Portée des variables
Résolu/Fermé
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
-
7 juin 2009 à 21:30
Wanted59 Messages postés 44 Date d'inscription vendredi 6 mars 2009 Statut Membre Dernière intervention 15 octobre 2009 - 10 juin 2009 à 18:49
Wanted59 Messages postés 44 Date d'inscription vendredi 6 mars 2009 Statut Membre Dernière intervention 15 octobre 2009 - 10 juin 2009 à 18:49
8 réponses
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
8 juin 2009 à 20:01
8 juin 2009 à 20:01
Je remet le bout de code qui foire :
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include <SDL_image.h>
#include "variables.h"
#include "kuruFries.h"
Et le super message du debuggeur :
main.cpp|413|error: `KuruFries_imageDeDebut' was not declared in this scope|
main.cpp|413|warning: unused variable 'KuruFries_imageDeDebut'|
main.cpp|447|error: `Kurutchin' was not declared in this scope|
main.cpp|447|warning: unused variable 'Kurutchin'|
||=== Build finished: 2 errors, 2 warnings ===|
Je montre aussi comment j'ai déclaré KuruFries_imageDeDebut dans kuruFries.h :
Et voilà je ne vois pas quoi mettre de plus.
A si, si je les bouges de place, genre si je les met juste en dehors du if, ça ne me met plus le bug mais vu qu'il y a une boucle je ne veux pas que l'ordi initialise des million de fois les variables sinon je ne pourrais rien en faire, 'fin bref je rame là.
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include <SDL_image.h>
#include "variables.h"
#include "kuruFries.h"
int main (int argc, char *argv[]) { /*.....................*/ /* ... du code ... */ /*.................I...*/ while(menu_extra) { SDL_WaitEvent(&event); if(declarationVariables) { texte_menu_extra_kuruFries = TTF_RenderText_Blended(police, "KuRu'S FrIeS" , couleurBleu); positionTexte_menu_extra_kuruFries.x = 500; positionTexte_menu_extra_kuruFries.y = 100; declarationVariables = false; } switch(event.type) { case SDL_QUIT: marcheDuJeu = false; menu_extra = false; break ; case SDL_MOUSEMOTION: positionPointeur.x = event.button.x - ((pointeur->w) / 2); positionPointeur.y = event.button.y - ((pointeur->h) / 2); break; } if(true) { if(positionPointeur.x > (positionTexte_menu_extra_kuruFries.x - 35) && positionPointeur.x < (positionTexte_menu_extra_kuruFries.x + (texte_menu_extra_kuruFries->w) - 35) && positionPointeur.y > (positionTexte_menu_extra_kuruFries.y - 30) && positionPointeur.y < (positionTexte_menu_extra_kuruFries.y + 25)) { texte_menu_extra_kuruFries = TTF_RenderText_Blended(police, "KuRu S FrIeS" , couleurJaune); switch(event.type) { case SDL_MOUSEBUTTONUP: if(event.button.button == SDL_BUTTON_LEFT) { menu_extra = false; menu_extra_kuruFries = true; } break; } } else { texte_menu_extra_kuruFries = TTF_RenderText_Blended(police, "KuRu S FrIeS" , couleurBleu); } } while(menu_extra_kuruFries) { SDL_WaitEvent(&event); if(kuruFries_declarationVariables) { KuruFries_imageDeDebut = SDL_LoadBMP("Data\\Images\\KuruFries\\image_debut.bmp"); Personnage Kurutchin(SDL_LoadBMP("Data\\Images\\KuruFries\\image_kurutchin.bmp"), positionKuruFries_kurutchin); positionKuruFries_kurutchin.x = 0; positionKuruFries_kurutchin.y = 800 - Kurutchin.returnM_personnage() / 2; kuruFries_declarationVariables = false; } switch(event.type) { case SDL_QUIT: marcheDuJeu = false; menu_extra_kuruFries = false; break ; case SDL_MOUSEMOTION: positionPointeur.x = event.button.x - ((pointeur->w) / 2); positionPointeur.y = event.button.y - ((pointeur->h) / 2); break; case SDL_KEYDOWN: kuruFries_afficher_imageDeDebut = false; } positionKuruFries_imageDeDebut.x = 0; positionKuruFries_imageDeDebut.y = 0; SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); if(kuruFries_afficher_imageDeDebut) { SDL_BlitSurface(kuruFries_imageDeDebut, NULL, ecran, &positionKuruFries_imageDeDebut); SDL_BlitSurface(pointeur, NULL, ecran, &positionPointeur); } else { Kurutchin.afficher(ecran); SDL_BlitSurface(pointeur, NULL, ecran, &positionPointeur); } SDL_Flip(ecran); } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0)); positionTexte_menu_extra_kuruFries.x = 500 - ((texte_menu_extra_kuruFries->w) / 2); SDL_BlitSurface(texte_menu_extra_kuruFries, NULL, ecran, &positionTexte_menu_extra_kuruFries); SDL_BlitSurface(pointeur, NULL, ecran, &positionPointeur); SDL_Flip(ecran); } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); SDL_Flip(ecran); } SDL_FreeSurface(pointeur); SDL_FreeSurface(texte_menu_solo); SDL_FreeSurface(texte_menu_solo_campagne); SDL_FreeSurface(texte_menu_solo_courseContreLaMontre); SDL_FreeSurface(texte_menu_solo_defis); SDL_FreeSurface(texte_menu_multijoueur); SDL_FreeSurface(texte_menu_option); SDL_FreeSurface(texte_menu_extra); SDL_FreeSurface(pointeur); SDL_Quit(); return 0; }
Et le super message du debuggeur :
main.cpp|413|error: `KuruFries_imageDeDebut' was not declared in this scope|
main.cpp|413|warning: unused variable 'KuruFries_imageDeDebut'|
main.cpp|447|error: `Kurutchin' was not declared in this scope|
main.cpp|447|warning: unused variable 'Kurutchin'|
||=== Build finished: 2 errors, 2 warnings ===|
Je montre aussi comment j'ai déclaré KuruFries_imageDeDebut dans kuruFries.h :
#ifndef KURUFRIES_H_INCLUDED #define KURUFRIES_H_INCLUDED #include "Personnage.h" SDL_Surface *kuruFries_imageDeDebut = NULL; SDL_Rect positionKuruFries_imageDeDebut; SDL_Rect positionKuruFries_kurutchin; bool kuruFries_declarationVariables = true; bool kuruFries_afficher_imageDeDebut = true; #endif
Et voilà je ne vois pas quoi mettre de plus.
A si, si je les bouges de place, genre si je les met juste en dehors du if, ça ne me met plus le bug mais vu qu'il y a une boucle je ne veux pas que l'ordi initialise des million de fois les variables sinon je ne pourrais rien en faire, 'fin bref je rame là.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 juin 2009 à 08:13
9 juin 2009 à 08:13
tu déclares : kuruFries_imageDeDebut
mais tu utilises : KuruFries_imageDeDebut = SDL_LoadBMP("Data\\Images\\KuruFries\\image_debut.bmp");
ATTENTION à respecter la casse en C !
mais tu utilises : KuruFries_imageDeDebut = SDL_LoadBMP("Data\\Images\\KuruFries\\image_debut.bmp");
ATTENTION à respecter la casse en C !
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
10 juin 2009 à 08:12
10 juin 2009 à 08:12
Oui, certes, j'ai zappé.
J'ai remarqué qu'en C, il ne faut s'occuper que d'une erreur à la fois, en général, une erreur découle de l'autre.
Bref, pour ton personnage, il s'agît bien d'un problème de porté. Ton code bien qu'indenté, est long, il est difficle de le comprendre rapidement.
Mais j'ai remarqué que tu déclares ton personnage au nom bizarre dans un bloc if, mais que tu l'appelles en dehors de ce bloc. toute variable crée dans un bloc est détruite à sa sortie, et si tu ne rentre pas dans le bloc if, tu ne déclare pas la variable et ne peut donc pas l'utiliser ensuite.
il suffit de mettre sa déclaration au même niveau que son appel le plus élevé dans la hiérarchie des blocs.
J'ai remarqué qu'en C, il ne faut s'occuper que d'une erreur à la fois, en général, une erreur découle de l'autre.
Bref, pour ton personnage, il s'agît bien d'un problème de porté. Ton code bien qu'indenté, est long, il est difficle de le comprendre rapidement.
Mais j'ai remarqué que tu déclares ton personnage au nom bizarre dans un bloc if, mais que tu l'appelles en dehors de ce bloc. toute variable crée dans un bloc est détruite à sa sortie, et si tu ne rentre pas dans le bloc if, tu ne déclare pas la variable et ne peut donc pas l'utiliser ensuite.
il suffit de mettre sa déclaration au même niveau que son appel le plus élevé dans la hiérarchie des blocs.
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
8 juin 2009 à 07:51
8 juin 2009 à 07:51
1er up
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
DarkAurora
Messages postés
417
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2013
27
8 juin 2009 à 08:03
8 juin 2009 à 08:03
deux choses si tu utilise plusieurs forms et tu récupére des éléments de l'un dans l'autre et vice versa tu dois les inclures (include) je pense que tu l'a fait mais vaux mieux vérifier
ensuite si tu utilise une classe la notions de private et de public peuvent jouer attention il ya private et public dans ta classe mais aussi dans tout le reste de tes forms et donc de ton programme
regarde aussi si tu les à correctement déclarer ces variables, une faute d'orthographe peut tout changer
regarde déjà ça je vais me pencher un peux plus sur ton code
ensuite si tu utilise une classe la notions de private et de public peuvent jouer attention il ya private et public dans ta classe mais aussi dans tout le reste de tes forms et donc de ton programme
regarde aussi si tu les à correctement déclarer ces variables, une faute d'orthographe peut tout changer
regarde déjà ça je vais me pencher un peux plus sur ton code
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 juin 2009 à 08:13
8 juin 2009 à 08:13
Salut.
En effet, tu ne mets pas assez le contexte pour que l'on puisse répondre.
Pour répondre, il faudrait savoir où sont déclaré tes variables.
Astuce : utilise les balises de code <code > pour inclure ton source, c'est plus lisible.
En effet, tu ne mets pas assez le contexte pour que l'on puisse répondre.
Pour répondre, il faudrait savoir où sont déclaré tes variables.
Astuce : utilise les balises de code <code > pour inclure ton source, c'est plus lisible.
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
10 juin 2009 à 07:42
10 juin 2009 à 07:42
Merci grâce à toi j'ai réglé le problème le kuruFries_imageDeDebut mais toujours pas celle du Personnage Kurutchin, merci quand même pour la résolution de la moitié de mon prob.
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
10 juin 2009 à 18:49
10 juin 2009 à 18:49
Voilà voilà tous les probs sont réglés grace à toi, merci beaucoup en tout cas, bonne continuation et encore merci.