我的C ++课程:
SELECT x.*
, SUM(y.sales)
FROM my_table x
JOIN my_table y
ON y.date BETWEEN x.date - INTERVAL 3-1 DAY
AND x.date GROUP BY x.date;
在python模块中,我有一个派生自上面的类并覆盖foo。
class Base {
public:
virtual void foo(int);
};
然后我使用python模块中定义的工厂方法创建此派生类的对象,如下所示:
class PyDerived(Base):
...
def foo(self):
...
使用C ++代码中的这个PyObject,我想调用foo,我想要在python模块中执行foo。这可能吗?如果是这样的话?
(我已经尝试从python调用虚拟方法,将实际调用分派给C ++方法,但这与我的要求不符)
答案 0 :(得分:1)
是的,您需要启用SWIG"导演"包含Base
方法的类virtual
的功能。您可以在文档here中阅读相关内容。
文档将告诉您需要向SWIG界面文件添加两项内容:
在一开始,编辑%module
指令以完全启用导演:
%module(directors="1") your_modulename
在声明类Base
或相应的%include
指令之前,请输入以下内容以启用该类的控制器功能:
%feature("director") Base;