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

Qt Discussion :

Les fonctions amies.


Sujet :

Qt

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut Les fonctions amies.
    bonjour à vous tous.
    bah voila j'ai essayé un code en utilisant une fonction membre d'une classe amie d'une autre pour accéder au attributs privé, mais ça marche pas le compilateur me dit que le membre dont lequel je veux accéder n'est pas déclarer.

    class fenetre prinçipale
    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
     
    class fenetre_principale : public QMainWindow, private Ui::fenPrincipale
    {
        Q_OBJECT
     
       public:
     
         fenetre_principale(QMainWindow *parent = 0);
         void setPseudo(QString nom,QString prenom);
         void setMsg(QString text);
         void setCode(QString ip);
         void verifier();
         void connexionServeur();
         friend bool room::delUser(QString ip); //fonction amie
         QString getCode() const;
     
     
       private slots:
     
          void nouvelleConnexion();
          void donneesRecues();
          void deconnexionClient();
     
          //void on_bouton_entrer_clicked();
     
      private:
     
         int m_id;
         QList<room *> nouvelleroom;
    };
    class room
    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
     
    class room : public QMainWindow, private Ui::salon
    {
        Q_OBJECT
     
        public:
     
           bool delUser(QString ip);
     
        private slots:
           void on_police_clicked();
           void on_couleur_clicked();
           void on_actionModifier_la_police_triggered();
     
        private:
            QString intpro;
           // QTcpServer *serveur;
           // QList<QTcpSocket *> clients;
           // quint16 tailleMessage;
            QTcpSocket *socket;
            QTextEdit *champ_recu;
            bool socketbool;
    };
    la fonction amie delUser
    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
     
    bool room::delUser(QString ip)
    {
        bool add = false;
        for (int i=0;i < nouvelleroom.size();i++)  //le compilateur me dit que nouvelleroom n'est pas declarer!!!
        {
            if (ip == nouvelleroom[i]->getIp())
            {
                 add = true;
                 nouvelleroom.removeAt(i);
                 break;
            }
            else
                 add = false;
        }
        if (add)
        return true;
        else
        return false;
    }
    quelqu'un peut m'aider? merci.

  2. #2
    Membre habitué Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 143
    Points
    143
    Par défaut
    Oui normal, QList<room *> nouvelleroom est déclaré dans la classe "fenêtre principale" mais tu l'utilise dans la classe "room".

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    oui effectivement, je sais que nouvellroom est dans la classe fenêtre_principale, c'est pour cela que les fonctions amies peuvent nous aider a accédé au membres privé d'une autre classe en utilisant "friend".

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Tu peux aussi te passer de friends, c'est très généralement une mauvaise idée.

    De plus tu n'as pas compris à quoi servait friend. Ce n'est pas pour importer la classe dans la fonction, mais pour accéder aux attributs et méthodes privées d'une instance de la classe. Oublie friend, il vaut mieux que tu revois ta conception (un passage d'instance et des getters suffisent normalement).

Discussions similaires

  1. Visibilité entre instances, les fonctions amies
    Par mouchT8 dans le forum Débuter
    Réponses: 24
    Dernier message: 07/11/2008, 13h32
  2. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  3. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  4. Les classes amies en Delphi
    Par Bruno75 dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2003, 19h34
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

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