On 15/04/12 03:23, Dave Abrahams wrote:

You can't do this; don't even try.  Each C++ class has to have a unique
Python identity.  If you just want to refer to the same class by a
different name, you can of course:

BOOST_PYTHON_MODULE( _sandbox )
{
     namespace bp = ::boost::python;
     object inner;
     {
         bp::scope scope = bp::class_<  Outer1>( "Outer1" );
         inner = bp::class_<  Inner>( "Inner" );
     }

     {
         object outer2 = bp::class_<  Outer2>( "Outer2" );
         outer2.attr("Inner") = inner;
     }
}


I didn't know you could do that and it is useful but it is not quite what I had in mind. I would rather not pass the inner object around all the parts of my code that might need it. Is it possible to get it out of the registry in the second block? I'm guessing it must be in there somewhere as I get exactly the same behaviour (plus the warning message) if I just register the class in both blocks.

Thanks,
John.

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to