在类标题之外移动odb pragma

时间:2015-11-16 22:53:54

标签: c++ odb

是否可以在类头之外移动odb(c ++ orm like framework)pragma? 例如,我定义了只有id的类basic_object(abstract):

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

然后在另一个文件中为该类创建编译指示

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

1 个答案:

答案 0 :(得分:0)

是的,你可以,它被称为名为pragma

在你的其他文件中你必须写

#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; 
相关问题