2015-11-16 27 views
4

是如何在類標題外部移動odb(C++ orm like framework)編譯指示的方式? 比如我定義類basic_object(摘要)只有ID:在類標題外部移動odb pragmas

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 

回答

0

是創建該類編譯指示,就可以了,這就是所謂的命名的編譯指示

在你的其他文件,你會寫

#pragma db object(basic_object) 
#pragma db member(basic_object::_id) id 

然後你必須告訴編譯器ODB到哪裏尋找。您可以通過使用

--odb-尾聲 '的#include 「other_file.hxx」'

做到這一點通過增加

#ifdef ODB_COMPILER 
#include "other_file.hxx" 
#endif 

到原始文件OR 作爲odb編譯器的參數。


但在該示例類中的一個問題basic_object你給了:你的數據字段_id是私有的。您可以通過

宣佈解決這個問題是公共

通過添加ODB接入類爲好友在你的類:

private: 
friend class odb::access; 
+0

謝謝回答! 現在我已經解決了問題,但忘了給主題添加自己的解決方案( 除了你的回答,我想說的不一定是使'_id'公開或添加好友類。最新版本的ODB編譯器能夠解析/使用你的公共getter和setter,如果他們適合通用風格,或者你可以添加自己的正則表達式來找到他們的 – Dcow

+0

@Dcow很高興知道謝謝(我猜他們在郵件列表中說過這個問題嗎?沒有在手冊中看過) – Superlokkus