我正在用 C++ 包装一个要在 Python 中子类化的类。为了测试它是否正常工作,我想使用 %extend swig 选项来添加一个要从 Python 调用的测试方法。即使使用我拼凑的一个非常简单的 C++ 类,任何添加方法的尝试都会导致以下错误:
Traceback (most recent call last):
File "test.py", line 12, in <module>
a.p()
File "Monkey.py", line 87, in p
def p(self): return _Monkey.Bar_p(self)
TypeError: in method 'Bar_p', argument 1 of type 'Bar *'`
如何使用 swig 向 C++ 类添加方法?
使用的代码示例:
Foo.h
class Bar
{
public:
Bar();
virtual ~Bar();
virtual void car() = 0;
};
Foo.i
%module(directors="1") Monkey
%{
#include <iostream>
#include "Foo.h"
%}
%include "Foo.h"
%feature("director") Bar::car;
%extend Bar
{
void p()
{
std::cout<<"p";
}
};