我的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?
答案 0 :(得分:1)
这是正常行为。 SWIG的%extend
指令在生成的代码中生成独立函数。如果在正文中使用$self
,那么该函数会提供一个参数(名为“self”),该参数是指向C ++类实例的指针。
作为旁注:C ++在幕后做了同样的事情。 this
指针作为第一个参数隐式传递给所有非静态成员函数。