是在类头之外移动 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/