2

bullet lib の btVector3 クラスの operator+ 関数をラップしようとしています。operator+ は、クラス メンバーとしてではなく、関数として定義されています。

クラスメソッドである operator+= のラッピングは正常に機能しています。swig インターフェイス ファイルで operator+ を宣言すると (これはクラス定義の外でのみ行うことができます)、swig はこれをクラスに属する演算子として認識しません。

拡張を使用しようとしました:

%extend btVector3
{
    btVector3 __add__(const btVector3& v1, const btVector3& v2) { return operator+(v1, v2); }  
};

これにより、btVector3 の python __add__ メソッドが swig によって生成されます。ただし、次の実行時エラーが発生します。

AttributeError: 'module' object has no attribute 'btVector3___add__'
4

1 に答える 1