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

Boost C++ Discussion :

probleme avec bind de boost


Sujet :

Boost C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut probleme avec bind de boost
    Bonjour,

    J'ai une classe de base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class totoMere 
    {
       public :
       ......
       virtual void fct () = 0 ;
     protected :
       handle (const boost::asio::error& error , size_t  tt)
     {
        .......
     }
      ......
    }
    et un autre class fils:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class totoFils : public totoMere
    {
         //ou je definis la fct fct()
        void fct()  {
       // je crée une socket  avec boost::asio et je fait appele a :
           socket_.async_read_some(boost::asio::buffer(buf,length),boost::bind(&totoMere::handle,this,boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));
        }
    }
    Mais il me lance deux erreurs pendant la compilation :
    1.error :void totoMere::handle(const boost::asio::error&, size_t)' is protected
    2. error : within this context


    a parament c'est au niveau de bind, et je ne comprend pas pourquoi il crache le premier error pourtant la class totoFils a acces aux fonctions protected de la classe de base.

    Merci pour votre explication et votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Citation Envoyé par kass28 Voir le message
    je ne comprend pas pourquoi il crache le premier error pourtant la class totoFils a acces aux fonctions protected de la classe de base
    Sauf que boost::bind crée un foncteur qui n'est pas du tout de type totoFils et n'a donc pas accès au contenu protégé de totoMere.

    MAT.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Salut,


    Sauf que boost::bind crée un foncteur qui n'est pas du tout de type totoFils et n'a donc pas accès au contenu protégé de totoMere.

    MAT.
    Je n'ai pas trop compris peux tu etre plus explisite ( je suis debutant en boost).
    Par contre j'ai essaye de remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           socket_.async_read_some(boost::asio::buffer(buf,length),boost::bind(&totoMere::handle,this,boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           socket_.async_read_some(boost::asio::buffer(buf,length),boost::bind(&totoFils::handle,this,boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));
    Est la je n'ai plus d'erreur. Mais je n'ai pas compris pourquoi les erreurs sont coriges ?

    Merci en avance

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par kass28 Voir le message
    Je n'ai pas trop compris peux tu etre plus explisite
    Bon en même temps j'ai dit une connerie, donc l'un dans l'autre...

    Apparemment ce simple code reproduit l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Base
    {
      protected:
        void f();
    };
     
    class Derived : public Base
    {
      void g() { &Base::f; }
    };
    Sachant que si on remplace &Base::f par &Derived::f ça compile sans problème...

    Donc rien à voir avec boost::bind en fait.

    MAT.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Bon en même temps j'ai dit une connerie, donc l'un dans l'autre...

    Apparemment ce simple code reproduit l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Base
    {
      protected:
        void f();
    };
     
    class Derived : public Base
    {
      void g() { &Base::f; }
    };
    Sachant que si on remplace &Base::f par &Derived::f ça compile sans problème...

    Donc rien à voir avec boost::bind en fait.

    MAT.
    Merci pour l'explication. tu aurras une idée pourquoi le fait de faire produit une erreur alors que f est une fonction de base et que derived entre autre c'est un base ?

    MErci

Discussions similaires

  1. Probleme avec bind
    Par rach20032 dans le forum Réseau
    Réponses: 1
    Dernier message: 09/07/2007, 10h07
  2. [DNS] Probleme avec BIND
    Par redvivi dans le forum Développement
    Réponses: 4
    Dernier message: 10/02/2007, 21h28
  3. Problème avec BIND
    Par Titam dans le forum Réseau
    Réponses: 2
    Dernier message: 16/10/2006, 12h40
  4. Problème avec bind!!!
    Par ouakammathieu dans le forum Réseau
    Réponses: 4
    Dernier message: 14/05/2006, 23h46
  5. Problème avec bind
    Par jaabouc dans le forum Réseau
    Réponses: 5
    Dernier message: 12/06/2005, 14h32

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