IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dev-C++ Discussion :

Erreur dev c++ non value assignement


Sujet :

Dev-C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut Erreur dev c++ non value assignement
    Qu'est-ce que peut siginfier l'erreur non value assignement ?

  2. #2
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    je ne programme pas avec devc++ mais ne serais-ce pas que tu utilises une variable non initialisée ?
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut
    En fait, dans mon programme, j'ai fait une classe sprite (récupérée en partie sur c++france)

    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);
    };
    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
         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;
    }

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Ce n'est pas plutot que tu essais d'assigner une valeur à autre chose qu'une variable, une fonction par exemple :
    Citation Envoyé par insomniak
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab.get_x(1)+=(int)(cos(rad)*tab.get_vitesse(1));
    tab.get_y(1)+=(int)(sin(rad)*tab.get_vitesse(1));

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut
    MMmmh... J'èsperai pouvoir le modifier grace a cette fonction, mais apperremment non...

    Comment fait-on pour modifier des variables en private ?

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par insomniak
    Comment fait-on pour modifier des variables en private ?
    Généralement, il y a une méthode du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int set_x(int numSprite);
    int set_y(int numSprite);
    (set à la place de get)
    Mais là, il semble falloir utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void SetPos(int numSprite, int x, int y);

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut
    hum.. ok merci !!

    Par contre, setpos sert juste a modifierla position de l'image, pas les variables de la classe.

    Encore merci !!

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut
    Alors voila, j'ai tout corriger, mais a ces 4 lignes là :

    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--);
    Il me dit :

    no post-decrement operator for type

    Alors que pour cette ligne là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       if (balle.get_x(0)>784)
    Il ne me dit rien... Pourtant, j'ai vérifié, get_x renvoi un int et get_angle aussi...

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    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);
    :

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut
    Je n'avais pas pensé a ça, mais effectivement, tu as raison...

    Moi j'dit vive les modos ^^

  11. #11
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    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.

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    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.

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Points : 55
    Points
    55
    Par défaut
    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 !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] erreur de champ non assigné
    Par zorglub88 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/03/2006, 14h49
  2. erreur sur un non filtre
    Par nico.chev dans le forum Access
    Réponses: 1
    Dernier message: 20/09/2005, 12h16
  3. Réponses: 1
    Dernier message: 19/08/2005, 12h33
  4. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59
  5. [FLASH MX] Erreur : L'identifiant non sensible à ...
    Par blowdesign dans le forum Flash
    Réponses: 2
    Dernier message: 16/05/2004, 21h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo