4

Is way to move odb (c++ orm like framework) pragmas outside class header? For example I define class basic_object (abstract) with id only:

class basic_object  {
   int _id;
public:
    int get_id() const;
    void set_id(int _id);
};

And then create pragmas for that class in another file

#pragma db object(basic_object) abstract
#pragma db member(basic_object::_id) get(get_id) set(set_id) id auto
4

1 回答 1

1

是的,你可以,它被称为命名 pragmas

在您的其他文件中,您必须编写

#pragma db object(basic_object)
#pragma db member(basic_object::_id) id

然后你必须告诉 odb 编译器去哪里寻找。您可以通过添加来做到这一点

#ifdef ODB_COMPILER
#include "other_file.hxx"
#endif

到您的原始文件 使用

--odb-epilogue '#include "other_file.hxx"'

作为 odb 编译器的参数。


但是basic_object您给出的示例类中存在一个问题:您的数据字段_id是私有的。您可以通过以下方式解决此问题

宣布公开

或者

通过将 odb 访问类添加为您的类中的朋友:

private:
friend class odb::access; 
于 2015-12-28T16:29:26.020 回答