1

Swig ファイル (.i) に次のコードがあります。

%extend vgSofa::handler::VertexShape
{

        vgd::Shp< vgSofa::handler::VertexShape > createVSWithNode( sofa::simulation::Node * root )
        {
            vgd::Shp< vgSofa::handler::VertexShape > result( new vgSofa::handler::VertexShape() );

            return result->init(root) ? result : vgd::Shp< vgSofa::handler::VertexShape >();
        }           

        vgd::Shp< vgSofa::handler::VertexShape > createVSWithBsicHandler( vgd::Shp<vgSofa::handler::BasicHandler> h )
        {
            return vgSofa_handler_VertexShape_createVSWithNode( $self, h->getRoot() );
        }   


};

作成された .cpp ファイルで、swig はメソッドに別のパラメーターを追加します。

SWIGINTERN vgd::Shp< vgSofa::handler::VertexShape > vgSofa_handler_VertexShape_createVSWithBsicHandler(vgSofa::handler::VertexShape *self,vgd::Shp< vgSofa::handler::BasicHandler > h)
{...}

この追加パラメーターが VertexShape に追加されないようにするにはどうすればよいですか?

4

1 に答える 1

1

それは正常な動作です。SWIG の%extendディレクティブは、生成されたコードでスタンドアロン関数を生成します。本体で使用する場合$self、その関数には、C++ クラスのインスタンスへのポインターである引数 (「self」という名前) が提供されます。

補足として、C++ は内部で同じことを行います。ポインターは、this最初の引数としてすべての非静的メンバー関数に暗黙的に渡されます。

于 2013-06-13T14:54:53.080 に答える