|
Boost Users : |
From: Patrick Ye (ye.patrick_at_[hidden])
Date: 2007-05-17 05:07:53
Hi guys,
I'm very new to boost.python, so my question might have been already answered.
I'm having a lot of trouble creating interfaces for class member
functions that return a reference to an object.
For example if we have the following class:
class btQuadWord
{
protected:
btScalar m_x;
btScalar m_y;
btScalar m_z;
btScalar m_unusedW;
public:
SIMD_FORCE_INLINE const btScalar& getX() const { return m_x; }
};
and we have the following interface code:
class_<btQuadWord>("btQuadWord")
.def("getX", &btQuadWord::getX)
;
I would get the following error messages (ignore the line numbers):
/usr/include/boost/python/detail/invoke.hpp: In function 'PyObject*
boost::python::detail::invoke(boost::python::detail::invoke_tag_<false,
true>, const RC&, F&, TC&) [with RC =
boost::python::detail::specify_a_return_value_policy_to_wrap_functions_returning<const
btScalar&>, F = const btScalar& (btQuadWord::*)()const, TC =
boost::python::arg_from_python<btQuadWord&>]':
/usr/include/boost/python/detail/caller.hpp:199: instantiated from
'PyObject* boost::python::detail::caller_arity<1u>::impl<F, Policies,
Sig>::operator()(PyObject*, PyObject*) [with F = const btScalar&
(btQuadWord::*)()const, Policies =
boost::python::default_call_policies, Sig = boost::mpl::vector2<const
btScalar&, btQuadWord&>]'
/usr/include/boost/python/object/py_function.hpp:38: instantiated
from 'PyObject*
boost::python::objects::caller_py_function_impl<Caller>::operator()(PyObject*,
PyObject*) [with Caller = boost::python::detail::caller<const
btScalar& (btQuadWord::*)()const,
boost::python::default_call_policies, boost::mpl::vector2<const
btScalar&, btQuadWord&> >]'
interface.cpp:112: instantiated from here
/usr/include/boost/python/detail/invoke.hpp:88: error: no match for
call to '(const
boost::python::detail::specify_a_return_value_policy_to_wrap_functions_returning<const
btScalar&>) (const float&)'
Now, btScalar here is just a #define for double, I've had similar
problems when the return reference is to a class object.
Is there anyway to get around this problem?
Thanks a lot.
Patrick
P.S. How do you get the full list of past mails from the mailing list?
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net