[C++-sig] Container Conversions: Wrapping Functions Expecting Non-const References

Ralf W. Grosse-Kunstleve rwgk at yahoo.com
Mon Aug 25 11:48:54 CEST 2008


Hi Paul,




> Here I have difficulties:
> 
> Boost.Python.ArgumentError: Python argument types in
>     ContainersExample2.doubleVectorOfInts(ContainersExample2, list)
> did not match C++ signature:
>     doubleVectorOfInts(class ContainersExample2 {lvalue}, class
> std::vector<int,class std::allocator<int> > {lvalue})
>
> What's the recommended technique(s) for this situation?

Boost.Python doesn't have "on-the-fly converters with write-back" (long story).

You have to wrap std::vector<int> "properly" if you want to pass non-const references to C++.
The vector-indexing suite is an option that should work well. Or you can follow this more
minimalistic example:


http://cctbx.svn.sourceforge.net/viewvc/cctbx/trunk/scitbx/stl/vector_wrapper.h?view=markup

Ignore the ref_from_array code near the bottom.

Ralf



More information about the Cplusplus-sig mailing list