如何制作满足SWIG中接口要求的python类?

时间:2018-08-01 20:27:51

标签: python c++ swig

我想在Python中创建一个使用SWIG破坏C ++实例的对象。

鉴于我有一个像Example.h这样的例子:

struct iCat
{
    virtual int paws() const = 0;
};

int pawGiver(const iCat& cat);

struct cat : public iCat
{
    int paws() const
    {
        return 4;
    }
};

还有Example.cpp

#include "Example.h"
int pawGiver(const iCat& cat)
{
    return cat.paws();
}

还有example.i

/* File : example.i */
%module example
%{
#include "Example.h"
%}
%include "Example.h"

以上内容,当然可以编译。我写了以下内容,尝试在Python中制作iCat,即:

import example;
class pyCat(example.iCat):
     def __init__(self):
             super().__init__()
     def paws(self):
             return 3;

z = pyCat()
example.pawGiver(z)

我想做的甚至有可能吗? Python类可以实现C ++实例吗?我在做什么错了?

1 个答案:

答案 0 :(得分:3)

很简单。将界面修改为:

/* File : example.i */
%module(directors="1") example
%{
#include "Example.h"
%}
%feature("director");
%include "Example.h"

运行正常。