resolving overloads in boost.python

Posted by swarfrat on Stack Overflow See other posts from Stack Overflow or by swarfrat
Published on 2010-03-12T21:36:13Z Indexed on 2010/03/12 21:37 UTC
Read the original article Hit count: 442

Filed under:
|
|

I have a C++ class like this:

class ConnectionBase
{
public:
    ConnectionBase();
    template <class T> Publish(const T&);

private:
    virtual void OnEvent(const Overload_a&) {}
    virtual void OnEvent(const Overload_b&) {}
};

My templates & overloads are a known fixed set of types at compile time. The application code derives from ConnectionBase and overrides OnEvent for the events it cares about. I can do this because the set of types is known. OnEvent is private because the user never calls it, the class creates a thread that calls it as a callback. The C++ code works.

I have wrapped this in boost.python, I can import it and publish from python. I want do create the equivalent of the following in python :

class ConnectionDerived
{
public:
    ConnectionDerived();

private:
    virtual void OnEvent(const Overload_b&)
    { 
        // application code
    }
};

But ... since python isn't typed, and all the boost.python examples I've seen dealing with internals are on the C++ side, I'm a little puzzled as to how to do this. How do I override specific overloads?

© Stack Overflow or respective owner

Related posts about boost

Related posts about python