我有一个像这样的 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++方面,我对如何做到这一点有点困惑。如何覆盖特定的重载?