3

私は、Python でサブクラス化されるクラスを C++ でラップしている最中です。これが正しく機能することをテストするために、%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++ クラスにメソッドを追加するにはどうすればよいですか?

使用されたコードの例:

フー。

class Bar
{
    public:
        Bar();
        virtual ~Bar();
        virtual void car() = 0;
};

フーアイ

%module(directors="1") Monkey
%{
#include <iostream>
#include "Foo.h"
%}

%include "Foo.h"

%feature("director") Bar::car;

%extend Bar
{
    void p()
    {
        std::cout<<"p";
    }
};
4

0 に答える 0