我正在慢慢地學習成爲一名更好的C++程序員,而且我目前正在討論爲C庫實現包裝程序的最佳方法。該庫是一個壓縮文件格式的包裝器,可以存儲各種類型的標籤(char *,char,double,float,int32_t)。這些類型存儲爲uint8_t *,並且有一些輔助方法可將這些標記轉換爲適當的類型。例如:在C++類中包裝C類庫,並進行類型轉換
char tag2char(const uint8_t *v);
char* tag2string(const uint8_t *v);
uint32_t tag2int(const uint8_t *v);
等等。
我對模板沒有太多的經驗,但是值得用類似於boost program options的方式將這些方法包裝在模板函數中嗎?即。 wrapper[tag].as<uint32_t>();
還是應該實現每種標記轉換方法,並讓用戶自己調用適當的方法?還是有更好的辦法可以處理這個問題?
感謝您的幫助。
該方法看起來相當低級別。圖書館能告訴你標籤是什麼類型?包裝的預期用途是什麼? – 2010-10-24 21:42:36
圖書館確實告訴你標籤是什麼。大多數情況下,包裝器的使用是爲了能夠訪問/修改這些標籤(以及存儲在數據中的一些其他信息)。 – GWW 2010-10-24 21:47:23