Есть ли способ переместить прагмы odb (c ++ orm like framework) за пределы заголовка класса?
Например, я определяю класс 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-epilogue ‘#include «other_file.hxx»‘
в качестве параметра компилятору odb.
Но есть одна проблема в примере класса basic_object
Вы дали: Ваше поле данных _id
это личное. Вы можете исправить это,
объявив это публично
или же
добавив в свой класс класс доступа odb с помощью:
private:
friend class odb::access;
Других решений пока нет …