Hello,
I'm new to boost::python and was having trouble wrapping a C++ function of
the form
void FindVCs(int vId, vector<int>& vcs);
Here vcs is allocated in the caller and populated by FindVCs.
Initially, I considered wrapping it something like this:
boost::python::list* FindVCs_wrap(int vid)
{
vector<int> vcs;
FindVCs(vid,vcs);
//wrap and return
boost::python::list* out_list = new boost::python::list;
unsigned int num_elems = vcs.size();
for( unsigned int idx = 0; idx < num_elems; idx++){
out_list->append(vcs[idx]);
}
return out_list;
}
however, this gives me compile time errors
Error 5 error C2027: use of undefined type
'boost::python::detail::specify_a_return_value_policy_to_wrap_functions_returning<T>'
Then I change the return type to
boost::shared_ptr<boost::python::list> FindVCs_wrap(int vid)
{
...
return boost::shared_ptr<boost::python::list>(out_list);
}
This compiles fine but then at runtime Python raises:
TypeError: No to_python (by-value) converter found for C++ type: class
boost::shared_ptr<class boost
::python::list>
Any ideas of what I am doing wrong ?
thanks,
-fj
--
View this message in context:
http://boost.2283326.n4.nabble.com/Wrapping-std-vector-int-with-boost-python-list-tp3731291p3731291.html
Sent from the Python - c++-sig mailing list archive at Nabble.com.
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig