2011-06-29 66 views
6

我正在寫一個獨特的ID生成器,它有不同的策略來生成一天,一週或一個月內唯一的ID。 我不想創建具有虛擬功能機制的類的層次結構基於枚舉模板是一個好主意嗎?

正在做類似下面的代碼片段,一個好主意? 有什麼建議嗎?

enum Duration { Day, Week, Month }; 

template <Duration d> 
class IDGenerator 
{ 
    generateId(); 
} 
+1

這將工作得很好,在這種情況下,各個「if」子句將完全優化。請注意,它不像專門針對類型的類模板那樣強大(儘管很多/大多數人會喜歡這裏的「較少的力量」)。 – Damon

+0

定義「好主意」。 –

回答

5

是的,它可以接受的,將工作不僅僅是文件如果編譯時多態性是足以讓你 - 您將節省虛擬呼叫,這將允許更好的編譯器coptimizations。

-1

如上所述,這是不必要的混淆。只需創建三個不同名稱的類。

+0

每次用「Hour」,「Year」等擴展枚舉時,添加一個類? – aioobe

+0

@Space:如果這是令人困惑的,他只是創建typedefs爲'typedef IDGenerator DayIDGenerator'等。無需創建三個不同名稱的類! – Nawaz

+0

@aioobe:模板只會幫助他,如果他有一個明智的默認實現。這實際上取決於如何實現'generateId()'。他可能只能將「持續時間」作爲該功能的一個參數。 –

相關問題