Qu'est-ce que peut siginfier l'erreur non value assignement ?
Qu'est-ce que peut siginfier l'erreur non value assignement ?
je ne programme pas avec devc++ mais ne serais-ce pas que tu utilises une variable non initialis�e ?
En fait, dans mon programme, j'ai fait une classe sprite (r�cup�r�e en partie sur c++france)
Et voici un tout petit bout de mon code ou il me dit nonvaluassignement :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 class Sprite { private: SDL_Surface **image; SDL_Rect *rect; int taille; int x; int y; int angle; int vitesse; public: // Constructeur. Sprite(int nbr_Sprite=350); // Destructeur. ~Sprite(); //Situation de sprite int get_x(int numSprite); int get_y(int numSprite); int get_angle(int numSprite); int get_vitesse(int numSprite); // Creation de sprite. int LoadBMP(char *nom, int x=0, int y=0, bool trans=false); int SetImage(SDL_Surface *newImage, int x=0, int y=0, bool trans=false); // Suppretion d'un sprite. void Supp(int numSprite); // Deplacement des sprite. void SetPos(int numSprite, int x, int y); void Move(int numSprite, int dep_x, int dep_y); // recupertion de la position d'un sprite. SDL_Rect *Pos(int numSprite); // Dessine les sprite void affich(SDL_Surface *cible, int numSprite); bool colision(int numSprite1, int numSprite2, int type); };
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 double rad = (3.1416 * tab.get_angle(0)) / 180; tab.get_x(1)+=(int)(cos(rad)*tab.get_vitesse(1)); tab.get_y(1)+=(int)(sin(rad)*tab.get_vitesse(1));
Et voici les fonctions cens�es me permettre de r�cup�rer x et y du sprite :
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 int Sprite::Get_angle(int numSprite) { return Sprite.angle; } int Sprite::Get_vitesse(int numSprite) { return Sprite.vitesse; } int Sprite::Get_x(int numSprite) { return Sprite.x; } int Sprite::Get_y(int numSprite) { return Sprite.y; }
Bonjour,
Ce n'est pas plutot que tu essais d'assigner une valeur � autre chose qu'une variable, une fonction par exemple :
Code : S�lectionner tout - Visualiser dans une fen�tre � part non value assignement
Envoy� par insomniak
MMmmh... J'�sperai pouvoir le modifier grace a cette fonction, mais apperremment non...
Comment fait-on pour modifier des variables en private ?
G�n�ralement, il y a une m�thode du genre :Envoy� par insomniak
(set � la place de get)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 int set_x(int numSprite); int set_y(int numSprite);
Mais l�, il semble falloir utiliser :
Code : S�lectionner tout - Visualiser dans une fen�tre � part void SetPos(int numSprite, int x, int y);
hum.. ok merci !!
Par contre, setpos sert juste a modifierla position de l'image, pas les variables de la classe.
Encore merci !!
Alors voila, j'ai tout corriger, mais a ces 4 lignes l� :
Il me dit :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 if (balle.get_angle(0) > 180 && xrelsouris < 0) balle.set_vitesse(0, balle.get_vitesse--); if (balle.get_angle(0) > 180 && xrelsouris > 0) balle.set_vitesse(0, balle.set_vitesse++); if (balle.get_angle(0) < 180 && xrelsouris < 0) balle.set_vitesse(0, balle.set_vitesse++); if (balle.get_angle(0) < 180 && xrelsouris > 0) balle.set_vitesse(0, balle.set_vitesse--);
no post-decrement operator for type
Alors que pour cette ligne l� :
Il ne me dit rien... Pourtant, j'ai v�rifi�, get_x renvoi un int et get_angle aussi...
Code : S�lectionner tout - Visualiser dans une fen�tre � part if (balle.get_x(0)>784)
Ce ne serait pas plut�t :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 if (balle.get_angle(0) > 180 && xrelsouris < 0) balle.set_vitesse(0, balle.get_vitesse() - 1); if (balle.get_angle(0) > 180 && xrelsouris > 0) balle.set_vitesse(0, balle.get_vitesse() + 1); if (balle.get_angle(0) < 180 && xrelsouris < 0) balle.set_vitesse(0, balle.get_vitesse() + 1); if (balle.get_angle(0) < 180 && xrelsouris > 0) balle.set_vitesse(0, balle.get_vitesse() - 1);:
Mieux que SDL : d�couvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Je n'avais pas pens� a �a, mais effectivement, tu as raison...
Moi j'dit vive les modos ^^
Il y a aussi une autre solution, pour modifier et obtenir une variable private :
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
25 struct Pos { int x; int y; } class Objet { public: Pos & Position(); private: Pos LaPosition; } Pos & Objet::Position() { return LaPosition; } Exemple de code : { Objet Truc; Truc.Position().x = 5; cout << Truc.Poition.y; }
Mes articles D�veloppez | Dernier article : Raytracer en haskell
Network library : SedNL | Zenol's Blog : http://zenol.fr
N'oubliez pas de consulter la FAQ et les cours et tutoriels.
Si ce n'est que pour fournir un acc�s en lecture / �criture (pas de calcul � faire, pas d'invariant � v�rifier, ...) alors �a ne sert � rien : autant mettre la donn�e en acc�s publique directement.
Voir la FAQ � ce sujet.
Mieux que SDL : d�couvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Oui, mais je m'en suis rendu compte plus tard, qu'en faite tout �a ne servait a rien...
Mais j'aurais au moins appris des choses !!
Partager