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

GTK+ Discussion :

[VALA] Problèmes avec les accesseurs


Sujet :

GTK+

  1. #1
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut [VALA] Problèmes avec les accesseurs
    Bonjour,

    J'essai de me mettre depuis peu au Vala, et j'ai un petit problème avec les accesseurs.

    Voici l'implémentation d'une classe Personnage:

    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
    public class Personnage {
      private string _m_nom;
      private int _m_vie;
     
      public string m_nom {
        public get { return _m_nom; }
        public set { _m_nom = value; }
      }
     
      public int m_vie {
        public get { return _m_vie; }
        private set { _m_vie = value; }
      }
     
      public Personnage () {
        this.m_nom = "Jack";
        this._m_vie = 100;
      }
     
      public Personnage.WithName (string name) {
        this.m_nom = name;
        this._m_vie = 100;
      }
    }
    Ce code fonctionne, mais je ne comprends pas pourquoi quand je déclare mes accesseurs comme ceci, ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      public string m_nom {
        public get;
        public set;
      }
     
      public int m_vie {
        public get;
        private set;
      }
    Donc, ben si vous pouvez m'éclaircir sur le sujet, ça serait sympa, merci

    PS. Désolé si je ne suis pas sur le forum approprié, mais je n'ai pas trouvé de forum sur Vala, et comme celui-ci est basé sur GLib, ben j'ai pensé que c'était le meilleur endroit

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Merci de définir "ça ne fonctionne pas" Ca ne compile pas, si oui, qu'est ce que ça dit exactement, si non, qu'est ce qu'il se passe ? Est-ce que ça plante, est-ce que ça ne fait rien, ... ?

  3. #3
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Ah, oui, désolé, je me disais bien il manquait quelque chose


    Il me dit:
    Personnage.vala:5.3-5.21: error: `Personnage' already contains a definition for `_m_nom'
    <b>Les processus à retourné 1 temps d'exécution : 1,08 s</b>
    Pourtant, dans la doc, cette syntaxe est correcte, non?

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ca n'est pas le " private string _m_nom;" qui est de trop ? j'aurais tendance à dire que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     private string m_nom {
        public get { return _m_nom; }
        public set { _m_nom = value; }
      }
    devrait suffire ? (NB: j'ai jamais fait de Vala de ma vie

  5. #5
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Citation Envoyé par artificier59 Voir le message
    Pourtant, dans la doc, cette syntaxe est correcte, non?
    Oui mais tu as du laisser :
    Code vala : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      private string _m_nom;
      private int _m_vie;

    Or quand tu définis des accesseurs automatiques, le compilateur ce charge de les créer pour toi

  6. #6
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    En effet, je les ai laissé, mais si je les enlève:

    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
     
    public class Personnage {
     
      public string m_nom {
        public get;
        public set;
      }
     
      public int m_vie {
        public get;
        private set;
      }
     
      public Personnage () {
        this.m_nom = "Jack";
        this.m_vie = 100;
      }
     
      public Personnage.WithName (string name) {
        this.m_nom = name;
        this.m_vie = 100;
      }
    }
    Et que je veux modifier la variable m_nom d'un objet Personnage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Main
    {
      public static int main (string[] args)
      {
        var perso = new Personnage ();
     
        Personnage.m_nom = "Marcel";
     
        return 0;
      }
    }
    Ben le compilateur me dit:
    main.vala:7.5-7.31: error: Access to instance member `Personnage.m_nom' denied
    <b>Les processus à retourné 1 temps d'exécution : 0,67 s</b>

  7. #7
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Logique :
    Citation Envoyé par artificier59 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      public int m_vie {
        public get;
        private set;
      }

  8. #8
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Euh, non, c'est m_nom que je veux changer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Personnage.m_nom = "Marcel";

  9. #9
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par artificier59 Voir le message
    Euh, non, c'est m_nom que je veux changer:
    J'ai parlé trop vite

    Citation Envoyé par artificier59 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Personnage.m_nom = "Marcel";
    Code vala : Sélectionner tout - Visualiser dans une fenêtre à part
    perso.m_nom = "Marcel";

    Fonctionne mieux

  10. #10
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Ah, oui, en effet, je ne m'en était pas rendu compte.
    J'ai une tendance à confondre l'objet et la classe parfois

    Merci beaucoup

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

Discussions similaires

  1. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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