[odb-users] Pimpl idiom and index definition pragma

dieter.govaerts at bricsys.com dieter.govaerts at bricsys.com
Thu Jun 25 03:49:23 EDT 2015

Hello everyone,

I'm using the pimpl idiom for my classes but I can't get to define a unique index over multiple columns with it.

enum ObjectType {

#pragma db object transient
class CustomProperty
    : public std::enable_shared_from_this<CustomProperty>
    unsigned int id() const;

    String const & name() const;
    void name(String const & value);

    ObjectType object_type() const;

    #pragma db id auto
    #pragma db member(id) virtual(unsigned int) get(this.impl().m_id) set(this.impl().m_id)
    #pragma db member(name) virtual(String) access(this.impl().m_name)
    #pragma db member(object_type) virtual(ObjectType) get(this.impl().m_object_type) set(const_cast< bim_lib::ObjectType & >(this.impl().m_object_type))
    #pragma db index("object_type_name_i") member(impl_.m_object_type) member(impl_.m_name) unique

    friend class odb::access;


    class Impl;
    CustomProperty(Impl *);

    Impl * const impl_;

No mater what I try to put between the member clauses for the object_type_name_i index, it always fails with the error: 

bim_lib_custom_props.h:48:44: error: data member 'impl_' specified in db pragma member is not composite

How can I solve this?

Thanks in advance.

Dieter Govaerts

More information about the odb-users mailing list