我應該定義一個接口,明確告知用戶他/她應該實現哪些內容才能使用該類作爲模板參數,或者讓該編譯器在未實現該功能時警告他?強制執行模板參數類的函數?
template <Class C1, Class C2>
SomeClass
{
...
}
C1類必須實現某些方法和運算符,編譯器在使用它們之前不會發出警告。我應該依靠編譯器來警告或確保我這樣做:
Class C1 : public SomeInterfaceEnforcedFunctions
{
// Class C1 has to implement them either way
// but this is explicit? am I right or being
// redundant ?
}
你是多餘的。如果你試圖調用C1沒有的方法,它不會被編譯,那應該就足夠了。 – 2010-11-02 18:37:48
@PigBen:我不同意。如果你只是把它留給編譯器,用戶會經常得到一個可怕的,無用的錯誤信息。通過一些自己執行需求的工作,你可以提高這一點。 – 2010-11-02 18:39:56
@Jerry - 這很公平。然而,在我看來,花時間學習理解錯誤信息會更好。它們不是無用的,只是很難破譯。然後,可以將該技能應用於理解其他錯誤,例如錯誤使用STL時獲得的錯誤。 – 2010-11-02 18:49:31