
Hi, In our system there are a lot of pointers to const objects flying around. I've got several problems in this regard. They can be exhibited by the following code snippet: a.cpp : class A{}; void boo1( A const* ) {} void boo2( A* ) {} A const* make_const_a() { return (A const*)0; } A* make_non_const_a() { return (A*)0; } std::vector<A const*> make_vec() { return std::vector<A const*>( 1 ); } .... class_<A,boost::noncopyable>( "A", bp::no_init ); class_<std::vector<A const*> >( "AVec", bp::no_init ) .def( vector_indexing_suite<std::vector<A const*> >() ) ; def( "boo", &boo1 ); def( "boo", &boo2 ); def( "make_const_a", &make_const_a, return_value_policy<reference_existing_object>() ); def( "make_non_const_a", &make_non_const_a, return_value_policy<reference_existing_object>() ); def( "make_vec", &make_v ec ); Problem I. Access to mutable func Following python statement mymodule.boo( mymodule.make_non_const_a() ) seems to call incorrect function boo Problem II. Vector fails completely Following python statements vec = pytoolkit.make_vec(); for e in vec: pass produce TypeError: No to_python (by-value) converter found for C++ type: class A const * Any advise? Gennadiy
participants (1)
-
Gennadiy Rozental