Перемещение одб прагм вне заголовка класса

Есть ли способ переместить прагмы 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

4

Решение

Да, можно, это называется по имени прагмы.

В другом файле вы должны написать

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]