gpt4 book ai didi

c++ - 当我想使用 Swig %extend 扩展给定类时 Swig 出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:29 32 4
gpt4 key购买 nike

我的 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?

最佳答案

这是正常行为。 SWIG 的 %extend 指令在生成的代码中生成独立函数。如果您在主体中使用 $self,则该函数会提供一个参数(名为“self”),该参数是指向 C++ 类实例的指针。

附带说明:C++ 在底层做同样的事情。 this 指针作为第一个参数隐式传递给所有非静态成员函数。

关于c++ - 当我想使用 Swig %extend 扩展给定类时 Swig 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089898/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com