[C++-sig] [boost.python] char arrays in structs
Ralf W. Grosse-Kunstleve
rwgk at yahoo.com
Mon Jul 4 19:12:07 CEST 2005
--- Markus Schöpflin <markus.schoepflin at comsoft.de> wrote:
> > Here bar_t is equivalent to a plain char*. The size information is lost.
> This
> > due to the C heritage.
>
> Duh, I keep forgetting about that. But this makes me wondering why the
> custom converter indeed does the trick in my example.
Sorry, David corrected me here. Apparently there is a difference between
foo(char s[4])
and what you have. I wasn't aware of that.
> You mean thin wrapper as follows?
>
> struct wrap_foo : public foo
> {
> char const *get_bar() { return bar; }
> };
>
> and then
>
> class_<foo_derived>("foo")
> .def_property("bar", &foo_derived::get_bar)
> ;
You don't have to use inheritance just to provide a wrapper. An unbound
function will also work if the first argument is foo& or foo const& (and maybe
even foo* etc., I am not sure):
char const*
get_bar(foo& self) { return foo.bar(); }
Then:
class<foo>("foo")
.def("get_bar", get_bar)
;
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the Cplusplus-sig
mailing list