加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在类标题之外移动odb编译指示

发布时间:2020-12-16 06:50:37 所属栏目:百科 来源:网络整理
导读:是否可以在类头之外移动odb(类似框架)pragma? 例如,我只定义了带有id的class basic_object(abstract): class basic_object { int _id;public: int get_id() const; void set_id(int _id);}; 然后在另一个文件中为该类创建编译指示 #pragma db object(basic
是否可以在类头之外移动odb(类似框架)pragma?
例如,我只定义了带有id的class 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.

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

#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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读