On 05/19/2010 06:23 PM, Thomas Daniel wrote:
The python wrappers created by boost don't seem to distinguish between
create(int) and create(double), although they do notice create(const char*):
<snip>
Any ideas what I do wrong?
You aren't doing anything wrong. The problem is that the boost.python
overload matcher for double also matches integers (I think it probably
should, generally), and that's getting tried first; only when the first
overload fails does Boost.Python try another.
A workaround is to change the order to expose them (the last one exposed
gets tried first):
BOOST_PYTHON_MODULE(Test) {
class_<Test>("Test")
.def("create", (Test (*)(double))&Test::create)
.def("create", (Test (*)(int))&Test::create)
.def("create", (Test (*)(const char*))&Test::create)
.def("get_type",&Test::get_type)
.staticmethod("create")
;
}
I admit it's not a very satisfying solution. Maybe someone else has a
better idea, but I think fixing this in Boost.Python would require a lot
of work.
Jim Bosch
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig