6

Boost.Python を使用して C++ クラスをラップしました。これらのオブジェクトには、C++ 側で強い参照 (boost::shared_ptr) があり、Python にも断続的な強い参照がある場合があります。これまでのところ、すべてがうまく機能しています。ただし、強参照の 1 つから python 弱参照を作成すると、最後の python 強参照が消えるとすぐに、この弱参照は削除されます。C++ 側の最後の強い参照も消えるまで、弱い参照を存続させたいと思います。それを達成することは可能ですか?

別の言い方をすると: 特定の C++ オブジェクト (Boost.Python によってラップされている) がまだ存在するかどうかを Python から調べる方法はありますか?

4

1 に答える 1

1

ラップされたクラスへの「C++ の強い参照」をどのように保持していますか?

私はブースト python にはかなり慣れていませんが、有効期間の管理を保証するのは、boost::shared_ptr の削除機能の存在だと思います。

それが問題でない場合は、おそらく C++ のインスタンスを boost::python::object に保持する必要があります。

于 2012-12-21T11:42:58.117 に答える