我在我的應用程序中使用box2d。它有一個類b2Body
。它有一個財產void *userData
及其訪問方法。換句話說:我們可以在那裏存儲一些關於物理體的附加信息。我想存儲有一些類對象:使用Python檢索C++對象成員指針
MyClass *obj = new MyClass();
b2Body body;
body.SetUserData(obj);
現在我要進去蟒用戶數據!我寫了一個函數封裝程序返回提取的指針:
MyClass *GetBodyUserData(b2Body &body)
{
void *userData = body.GetUserData();
if (userData) return (MyClass*)userData;
std::cout << "Fail.";
return nullptr;
}
現在,當我打電話GetBodyUserData
在python我有一個空或「死」對象:(
我試圖存儲智能指針insted的一個純粹的,但它不是由SetUserData
接口允許的。
任何想法?
UPD 導出到Python:
bp::def("GetBodyUserData", &GetBodyUserData, boost::python::return_value_policy <boost::python::reference_existing_object>())
你在做什麼非常好,C++明智。你如何將指針傳遞給Python? –
它輸出「失敗?」 – Maxpm
@Maxpm不,它沒有。 – Ockonal