【发布时间】:2011-07-27 06:44:20
【问题描述】:
我不是在寻求向 Python 公开虚函数的帮助,我想知道如何从 C++ 端调用上述虚函数。考虑一下...
// ====================
// C++ code
// --------------------
struct Base
{
virtual void func() {
cout << "Hello from C++!";
}
};
BOOST_PYTHON_MODULE(name)
{
// Expose the class and its virtual function here
}
// ====================
// Python code
// --------------------
from name import Base
class Deriv(Base):
def func():
print('Hello from Python!')
关于如何将Base* 获取到派生类型的任何建议,以便在我执行base->func() 时调用Python 函数? Boost 文档只描述了如何向 Python 公开虚函数,而不是如何从 C+ 调用它们的重新定义。
【问题讨论】:
-
我猜如果你公开它,它要么正常工作,要么不受支持。你试过了吗? (要么在对象上有另一个方法来调用虚拟,要么有一个单独的函数来获取实例并调用虚拟)。