Boost logo

Boost Users :

Subject: [Boost-users] [bind] Unable to pass method to simple function pointer
From: Carlos (carlos_at_[hidden])
Date: 2009-10-27 06:26:31


Hello,

I am trying to make a wrapper for libxml's SAX api, for learning purpose, I
am trying to use bind to wrap sax events in a class like this :

namespace sax {
    class document {

        public:
            document();
            ~document();

        protected:

            virtual void start_node( void *user_data, const xmlChar *name,
const xmlChar **attrs );

            xmlSAXHandler m_evhdl;
            xmlParserCtxtPtr m_ctxt;
    };
}

The start_node() function is intended to be pointed by the startElement
member from xmlSAXHandler ( it has same definition than start_node ).

I tried to use bind to copy function pointer in the constructor like this :

document::document() {

       // binding here
    m_evhdl.startElement = boost::bind( &document::start_node, this, _1, _2,
_3 );

       // xml init
    m_ctxt = xmlCreateFileParserCtxt( "catalogue.xml" );

    m_ctxt->sax = &m_evhdl;
    xmlParseDocument( m_ctxt );
}

The issue is that I can't submit the binded function to startElement because
bind submits "this" as a parameter to startElement, which is incompatible
definition, so is there a solution to my binding ?

Regards
Carlos



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net