Boost logo

Boost Users :

From: Malte Clasen (news_at_[hidden])
Date: 2006-06-07 19:52:34


Hi,

I usually use shared_ptrs to const as function parameters, such as
boost::shared_ptr<const A>, to explicitly state that this function does
not modify the pointee. Now I'm trying to do the same in boost.python:

----- C++
class A {};
void testA(boost::shared_ptr<A> s) {}
void testAc(boost::shared_ptr<const A> s) {}

void register() {
   class_<A, boost::shared_ptr<A> >("A")
   def("testA", testA);
   def("testAc", testAc);
}

void testCPP() {
   boost::shared_ptr<A> a(new A());
   testA(a);
   testAc(a);
}

----- Python
a = A()
testA(a)
testAc(a)
-----

The c++ part compiles and runs just fine, but the python call to
testAc() fails with the following error message:

-----
testAc(a)
ArgumentError: Python argument types in
     _Map.testAc(A)
did not match C++ signature:
     testAc(class boost::shared_ptr<class Map::A const >)
-----

Is there a way to use the automatic conversion from A to const A in
boost.python?

     Malte


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