我有一些C ++代码可以将事件传递给Python对象。观察者保持为weak_ptr
,因此他们不必取消注册。
这适用于C ++,但是桥接弱指针和Python弱引用很麻烦(我还希望Python事件处理程序不会被订阅保留,就像在C ++代码中一样)。为了拥有一个实时观察者,当对象处于活动状态时,某些东西需要有一个指向它的共享指针,所以归结为让Python中的观察者控制C ++观察者对象的生命周期。
到目前为止,我提出的方法涉及大量的样板和中间对象(例如,为保持C ++观察者的类型创建另一个PyTypeObject,并对Python观察者进行弱引用并将其设置为Python观察者,因此它就死了。)
问题是,有没有明显的方法可以做到这一点?
答案 0 :(得分:0)
我会在C ++模块上编写一个python包装器,并在python包装器中调度到python观察器。那就够了吗?
当你提到某些东西需要有一个共享指针时,如果该共享指针在堆栈上,直到给定观察者返回它是否足够?