Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当我想用Swig%extend扩展给定类时,Swig出现问题_C++_Python_Wrapper_Swig - Fatal编程技术网

C++ 当我想用Swig%extend扩展给定类时,Swig出现问题

C++ 当我想用Swig%extend扩展给定类时,Swig出现问题,c++,python,wrapper,swig,C++,Python,Wrapper,Swig,我的Swig文件(.I)中有以下代码: %extend vgSofa::handler::VertexShape { vgd::ShpcreateVSWithNode(sofa::simulation::Node*根) { vgd::Shpresult(新的vgSofa::handler::VertexShape()); 返回结果->初始化(根)?结果:vgd::Shp(); } vgd::ShpcreateVSWithBsicHandler(vgd::Shp h) { 返

我的Swig文件(.I)中有以下代码:

%extend vgSofa::handler::VertexShape
{
vgd::ShpcreateVSWithNode(sofa::simulation::Node*根)
{
vgd::Shpresult(新的vgSofa::handler::VertexShape());
返回结果->初始化(根)?结果:vgd::Shp();
}           
vgd::ShpcreateVSWithBsicHandler(vgd::Shp h)
{
返回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)
{...}
SWIGINTERN vgd::ShpvgSofa\U handler\U VertexShape\U createVSWithBsicHandler(vgSofa::handler::VertexShape*self,vgd::Shph)
{...}

如何防止向VertexShape添加此附加参数?

这是一种正常行为。SWIG的
%extend
指令在生成的代码中生成独立函数。如果在正文中使用<代码> $Auto/Cuth>,该函数将提供一个参数(名为“SUBE”),它是指向C++类实例的指针。p>

作为一个旁注:C++在引擎盖下做同样的事情。

指针作为第一个参数隐式传递给所有非静态成员函数。

这是一种正常行为。SWIG的
%extend
指令在生成的代码中生成独立函数。如果在正文中使用<代码> $Auto/Cuth>,该函数将提供一个参数(名为“SUBE”),它是指向C++类实例的指针。p>

作为一个旁注:C++在引擎盖下做同样的事情。

指针作为第一个参数隐式传递给所有非静态成员函数。

谢谢,正如您所说,在所有非静态函数参数中添加了参数$self,我已将我的函数声明为静态函数,问题已解决。谢谢,正如您所说,参数$self被添加到所有非静态函数参数中,我已经将我的函数声明为静态函数,问题已经解决。
SWIGINTERN vgd::Shp< vgSofa::handler::VertexShape > vgSofa_handler_VertexShape_createVSWithBsicHandler(vgSofa::handler::VertexShape *self,vgd::Shp< vgSofa::handler::BasicHandler > h)
{...}