Remote deletion of lv_obj_t
If you start using a lv_obj_t inside another lv_obj_t, then you have an issue. If you delete the parent, the child lv_obj_t * instance will be deleted by LVGL, but the C++ wrapper object will not.
In order to have a link between both, you need to register a LV_EVENT_DELETE on every lv_obj_t * you are wrapping so you can be informed when a children is deleted too and delete the wrapper.
However, this comes with a large penalty, each object now cost a wrapper + an event handler object.
I see the same issue.
I tried to use the LVGL class functions around lv_obj_class_t (see lv_obj.c, lv_label.c, etc...) to construct a C++ class. This works as long as the class doesn't use virtual functions (and has a virtual table) since LVGL assumes the position of lv_obj_t is at the first memory address (and not after the virtual function table pointer).