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在正文中使用,该函数将提供一个参数(名为“self”),该参数是指向 C++ 类实例的指针。

作为旁注:C++ 在引擎盖下做同样的事情。指针作为第this一个参数隐式传递给所有非静态成员函数。

于 2013-06-13T14:54:53.080 回答