Given a class:
class TCurrency {
TCurrency();
TCurrency(long);
TCurrency(const std::string);
...
};
Wrapped with Boost.Python:
class_<TCurrency>( "TCurrency" )
.def( init<long> )
.def( init<const std::string&> )
...
;
Is it possible to create a factory method that appears as a constructor in Python:
TCurrency TCurrency_from_Foo( const Foo& ) { return TCurrency(); }
Such that in python:
bar = TCurrency(foo)
You can use
make_constructor(untested):The argument to make_constructor is any functor that returns a pointer[1] to the wrapped class.
[1] Actually, the function must return a the pointer holder type, so if your pointer holder is
boost::shared_ptr, the function should return a boost::shared_ptr instead of a raw pointer.