执行销毁命令

2024-03-29 12:34:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个C++类,例如假设为

class A
{
};

class B
{
};

然后我用SWIG包装这些文件,以创建Python绑定

%include "A.h"
%include "B.h"
...etc

在Python方面,我使用这些

a = A()
b = B()

我想以某种方式强制执行销毁顺序,因此是~B()然后~A()。如果以其他顺序调用它们,~B()将由于指针悬空而出错。你知道吗

有没有什么方法可以修改SWIG接口以首先强制销毁B?比如只允许在上下文管理器中使用它?添加对A对象的引用?在B的构造函数中取一个A参数并增加它的引用计数?你知道吗


Tags: 文件对象方法管理器参数include顺序方式
1条回答
网友
1楼 · 发布于 2024-03-29 12:34:28

首先,Python不能保证销毁顺序。如果你需要像C++的RAII那样的东西,那么使用上下文管理器。你知道吗

第二,如果你的C++代码段错误,那就是你的C++代码的错误。一般来说,您的目标应该是那些如果使用不当甚至无法编译的代码。在这里,我建议您将shared_ptr<A>传递到B,以确保A不会在B之前被销毁。你知道吗

相关问题 更多 >