3

Boost.Python を使用して C++ ライブラリをラップしています。

同じ Python インスタンス (オブジェクト ID による) が特定の C++ インスタンス (ポインター ID による) に対して常に返されるようにするにはどうすればよいですか? C++ クラスを拡張することはできませんが、役立つ場合はメンバー変数 (PyObject * や boost::python::handle<> など) を追加できます。Python インスタンスを C++ インスタンスにキャッシュし、新しいインスタンスを作成する代わりにキャッシュされたインスタンスを返すことができるはずだと考えています。ただし、必要なラッピング コードがわかりません。

ラップされるクラスの例:

class C {
public:
    boost::python::handle<> wrapper_;

private:
    C();
    C(const C &);
    ~C();
};

誰でもアドバイスを提供できますか?

4

1 に答える 1

1

まさにこの問題に時間を費やした後、私はそれが価値があるよりも面倒であるという結論に達しました. 私は、id() が (潜在的に短命の) ラッパー オブジェクトを識別し、実際の C++ オブジェクトを識別することを辞任しました。

代わりに、コンテンツを調べるなど、別の方法で C++ オブジェクトを識別します。

于 2010-07-12T07:52:14.267 に答える