[odb-users] Attempt to refer to a dbvalue inside another dbvalue - "invalid data member in db pragma column"

Boris Kolpackov boris at codesynthesis.com
Mon Aug 1 08:02:26 EDT 2022


Артем Бабаев <vavp12345 at yandex.ru> writes:

> #include <odb/core.hxx>
> #pragma db value
> struct Val_1 { int a; };
> #pragma db value
> struct Val_2 { Val_1 val1; };
>  
> #pragma db object
> class Object {
>     friend odb::access;
> #pragma db id auto
>     int id;
>     Val_2 value;
> };
>  
> #pragma db view object(Object)
> struct ObjectView
> {
> #pragma db column(Object::value) ///< OK
>     Val_2 val2;
> #pragma db column(Object::value.val1.a) ///< OK
>     int a;
> #pragma db column(Object::value.val1) ///< DONT WORK: "invalid data member in db pragma column"
>     Val_1 val1;
> };

Yes, can confirm this still fails in the development version.

Not sure when we will get to fixing this seeing that it's a fairly
obscure case. But if you want to try to fix it, patches are welcome.

You can also probably work around this by "decomposing" Object::value
using virtual data members.



More information about the odb-users mailing list