OpenGLでリソースローダーを作成し、Pythonに公開しました。次の関数があります。
Texture* tex = ResourceManager->loadTexture("name.png")
次に、テクスチャ名をベクトルリストに保持するので、次回ロードするときに、既にロードされているかどうかをチェックし、その後、そのポインタでそれを返します。
しかし、それをアンロードしたいとき、私は知りません何回使用されているか、直接アンロードするとクラッシュします。同じポインタが何度も使用され、すべてのクラスがPythonに公開されているためです。
この問題をすべてPythonに任せて(自動アンロード)、どのテクスチャをロードして再利用できるのかを考えていませんか?
ps:
platform: linux-x64
gcc: 4.8.3
python c++ boost-python,
editor:kdevelop
回答:
回答№1は0ブースト。PythonはC ++ 11を正しく使用するか、shared_ptrをブーストします。代わりにboost :: shared_ptrを返すだけで、参照カウントが言語境界を越えて、またC ++コードで処理されます。