gpt4 book ai didi

c++ - 将 odb pragmas 移到类头之外

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:18 25 4
gpt4 key购买 nike

是否可以将 odb(c++ orm 类框架)编译指示移到类头之外?例如,我只用 id 定义类 basic_object(抽象):

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-epilogue '#include "other_file.hxx"'

作为 odb 编译器的参数。


但是在您提供的示例类 basic_object 中存在一个问题:您的数据字段 _id 是私有(private)的。您可以通过

解决此问题

公开声明

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

private:
friend class odb::access;

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com