我目前正在爲我們的日誌記錄庫添加一些功能。其中之一就是可以聲明一個模塊名稱,該模塊名稱可以自動預先寫入該類中寫入的任何日誌消息。但是,如果沒有提供模塊名稱,則不會有任何前提。目前我正在使用一個具有返回名稱的靜態函數的特徵類。聲明要記錄的類的模塊名稱
template< class T >
struct ModuleNameTrait {
static std::string Value() { return ""; }
};
template< >
struct ModuleNameTrait<Foo> {
static std::string Value() { return "Foo"; }
};
該類可以使用助手宏來定義。缺點是,模塊名稱必須在類之外聲明。我希望這可以在課堂上進行。另外,我希望能夠使用預處理器指令移除所有日誌記錄代碼。我知道使用SFINAE可以檢查一個模板參數是否具有某個成員,但是由於其他人不像模板那樣友好,因此必須維護代碼,所以我正在尋找一個更簡單的解決方案。如果沒有,我會堅持特質方法。
提前致謝!
這是完美的!有時候我沒有看到樹林,我正在想辦法變得複雜。謝謝! – 2010-03-25 12:00:03
我知道這個問題:) – 2010-03-25 14:08:42