Я использовал boost::python
в прошлом, но эта проблема поставила меня в тупик.Вот часть класса, с которой у меня проблемы:
class Entity
{
public:
Entity();
~Entity();
//Call to check our collider against all entities that have "tag"
Collider* Collide(const std::string &tag);
};
, а вот код boost::python
:
bp::class_< Entity_wrapper >( "Entity", bp::init< >() )
.def(
"Collide"
, (::Monocle::Collider * ( ::Monocle::Entity::* )( ::std::string const & ) )( &::Monocle::Entity::Collide )
, ( bp::arg("tag") ),
bp::return_value_policy<bp::reference_existing_object>() )
В Python, если я сделаю что-то вроде этого:
collider = entity.Collision("Paddle")
collider
является слабой ссылкой на type
, а не Collider
.Мои другие функции, которые возвращают указатели, кажутся хорошими.Это просто политика вызовов, которую я использую?Что делает Collide, так это вызывает статическую функцию («Collide») класса Collision, которая, в свою очередь, возвращает Collider * в случае успеха и NULL в противном случае.
Любая помощь приветствуется!Если вам нужна дополнительная информация, дайте мне знать!