是在类头之外移动 odb(c++ orm 类框架)编译指示的方法吗?
例如,我仅使用 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

最佳答案

是的,你可以,它被称为命名编译指示。

在你的另一个文件中,你必须写

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

然后你必须告诉odb编译器去哪里寻找。您可以通过添加来做到这一点
#ifdef ODB_COMPILER
#include "other_file.hxx"
#endif

到您的原始文件
通过使用



作为 odb 编译器的参数。

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

公开宣布



通过将 odb 访问类添加为您的类中的 friend :
private:
friend class odb::access;

关于c++ - 将 odb pragma 移到类头之外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33746158/

10-12 17:08