SWIG:如何更改自动生成的 "delete_xxx" 代码

SWIG: How to change the autogenerated "delete_xxx" code

我在 SWIG 接口文件和一个名为 Test 的 class 中有以下声明:

 %extend qual_name {
 public:
    ~short_name() 
    {
        //Do something here
    };
 }

上述声明在 swig 生成的 CPP 文件中生成了一个 SWIGINTERN void delete_Test(Test* self) 方法。问题是我有很多 classes 并且为所有 delete_XXX 方法生成了相同的代码。我想为一个特定的 class 修改此 delete_XXX 方法的内容。我该怎么做?

我尝试了 %ignore 关键字,但它只是忽略了整个定义,甚至删除了对它的任何调用。不确定是否可以使用 %typedef 来修改方法内容。

我通过在接口文件中添加以下行解决了这个问题:

 %ignore qual_name::~short_name;
 %extend Test {  
 public:  
    ~Test() { // custom code here };  
 }