使用Swig向类添加方法

时间:2012-04-25 18:57:55

标签: c++ python swig

我正在用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";
    }
};

0 个答案:

没有答案