我知道這個問題可能非常含糊,而且對於我給出的答案here有點延伸。基本上,作爲一個個人項目,我一直試圖複製「代碼優先」成語,這在C#程序員做數據庫工作時非常流行,但在C++中。一切都很好,運作良好。將模板類初始化爲基類的一個很好的方法
關於C#的一件偉大事情就是屬性等事情。我們並沒有在C++中是新穎性,所以我對於一個特定的類,然後在數據庫結構,代碼如下:
class User : public Record {
public:
User(Model& m) : Record(L"_user", m)
, Username(L"_userName", 32, false)
, Nickname(L"_nickName", 32, false) {
field(Username);
field(Nickname);
}; // eo ctor
Field<String> Username;
Field<String> Nickname;
}; // eo class User
理想情況下,我想在構造函數中擺脫field
電話。他們所做的一切本質上都是將該領域註冊到基礎課程中,然後開展真正的工作。我該如何完成這種事情,並將細節傳遞給基類,就像我在構造函數中指定的那樣?
在上一個問題I answered我能夠給出的基類信息感謝C++構造的東西。有沒有一種方法可以在構造函數中利用這一點,並擺脫可能引入程序員錯誤的討厭field
調用?
在這一點上,我很高興,一切都很好,但我很想減少混亂,並在構造函數中刪除這個「註冊」過程的需要,並以某種方式讓它們自動註冊到基類。歡迎
所有意見:)
編輯
的field
的implentation正是如此:
void Record::field(detail::field_base& field) {
field.owner_ = this;
fields_.push_back(&field);
}; // eo field**
這將有助於如果你能夠顯示'field()'實際做了什麼以及它是哪個類的成員('Record',我想,但這只是一個猜測) – 2013-03-14 00:05:45
@AndyProwl,我已經修改了題。除了將其推入稍後的推薦列表之外,它幾乎沒有什麼用處。 – 2013-03-14 00:08:50