我的C++类:
class Base {
public:
virtual void foo(int);
};在python模块中,我有一个从上面派生的类,它覆盖了foo。
class PyDerived(Base):
...
def foo(self):
...然后,我使用python模块中定义的工厂方法创建这个派生类的对象,如下所示:
def createObject():
m = PyDerived()
return m在C++代码中使用此PyObject,我希望调用foo,并希望执行python模块中的foo。这个是可能的吗?如果是这样的话,是怎么做的?
(我已经尝试从python调用虚方法,它将实际调用分派给C++方法,但这不符合我的要求)
发布于 2016-02-25 06:06:23
是的,您需要为包含virtual方法的Base类启用SWIG "directors“功能。您可以在documentation here中了解到这一点。
文档将告诉您,您需要向SWIG界面文件添加两项内容:
%module指令以启用控制器:对于类Base的声明或相应的%include指令,请输入以下内容以启用该类的控制器功能:
%feature("director") Base;
https://stackoverflow.com/questions/35608136
复制相似问题