[C++-sig] Type converter not found for property

Jim Bosch talljimbo at gmail.com
Wed May 8 23:48:10 CEST 2013


On 05/08/2013 04:33 PM, Wichert Akkerman wrote:
> I am trying to expose a class with a boost::uuids::uuid member to Python. The class is pretty simple:
>
> class Article {
> public:
>       boost::uuids::uuid uuid;
> };
>
> which is exposed like this:
>
> article
>          .def(init<boost::uuids::uuid, Article::Type>((arg("uuid")))
>          .def_readwrite("uuid", &Article::uuid);
>
> and I have basic converter registered (see https://gist.github.com/wichert/5543390 , it is a bit large to include in this email). This compiles fine and the uuid convertor works correctly when trying converting from python to C++, but trying to access the uuid property results in "TypeError: No Python class registered for C++ class boost::uuids::uuid". I don't understand why that doesn't work; does anyone see what I missed?
>

I suspect that def_readwrite requires lvalue converters, and I see that you've only implemented an rvalue converter.  I think in this case you're better off just writing a getter and setter, and wrapping those using add_property.

Jim



More information about the Cplusplus-sig mailing list