2012-03-06 89 views
4

我有一些C++代码,可提供事件Python对象跟踪一个对象的CPython的寿命。观察家们不停地为weak_ptr S,所以他们没有注销。从C扩展

这适用于C++,但桥接弱指针和Python弱引用很麻烦(我还希望Python事件处理程序不会因订阅而保持活动状态,与C++代码中相同)。为了有一个活观察者,一些需要有一个共享指针到它,而该对象是活的,所以它归结为具有在Python土地控制观察者一个C++对象观察者的寿命。

到目前为止,我所提出的方法涉及大量的样板和中间对象(例如为一个类型创建另一个PyTypeObject,该类型保留一个C++观察者和一个对Python观察者的弱引用并将其设置为成员Python的观察者,这样它就会死亡)。

的问题是,是否有任何明显的方式做到这一点?

回答

0

我会在C++模块上编写一个python包装器,并派发到python包装器中的python观察器。这足够吗?

当你提到某事需要共享指针时,如果共享指针在堆栈上,直到给定的观察者返回,是否就足够了?