У меня есть класс C ++, подобный этому:
class ConnectionBase
{
public:
ConnectionBase();
template <class T> Publish(const T&);
private:
virtual void OnEvent(const Overload_a&) {}
virtual void OnEvent(const Overload_b&) {}
};
Мои шаблоны и перегрузки являются известным фиксированным набором типов во время компиляции. Код приложения является производным от ConnectionBase и переопределяет OnEvent для событий, о которых он заботится. Я могу сделать это, потому что набор типов известен. OnEvent является закрытым, потому что пользователь никогда не вызывает его, класс создает поток, который вызывает его как обратный вызов. Код C ++ работает.
Я обернул это в boost.python, я могу импортировать его и публиковать из python. Я хочу создать эквивалент следующего в Python:
class ConnectionDerived
{
public:
ConnectionDerived();
private:
virtual void OnEvent(const Overload_b&)
{
// application code
}
};
Я не хочу (не хочу) выставлять стандартные функции OnEvent, так как они никогда не вызываются из кода приложения - я только хочу предоставить тело для вызова класса C ++.
Но ... поскольку python не набран, и все примеры boost.python, которые я видел по внутренним компонентам, относятся к C ++, я немного озадачен тем, как это сделать. Как переопределить определенные перегрузки?