我正在嘗試編寫一個幫助程序員編寫正確代碼的模板類。它將計算從舊金山到紐約經華盛頓的路線,從舊金山到華盛頓的路線以及從華盛頓到紐約的路線。當從舊金山到洛杉磯和華盛頓到紐約的路線時,編譯器會報告一個錯誤。具有模板功能,專業化的類模板
這裏是類(不正常的主力功能):
extern const char miami[] = "Miami";
template< const char* FINISH, const char* START>
class Route {
public:
Route();
~Route() {};
template<const char* OTHERPLACE>
Route<START, OTHERPLACE> alterFinish() const;
};
template<const char* START> // specialisation
template<const char* OTHERPLACE>
// Allow only miami as FINISH to be changed to something else.
Route<START, OTHERPLACE> Route<START, miami>::alterFinish() const{
return Route<START, OTHERPLACE>();
}
可惜,這是行不通的。我得到'不完整類型的錯誤使用'錯誤。沒有專業化的同樣的功能編譯。我究竟做錯了什麼?
是否有理由需要使用字符串文字而不是枚舉? – ildjarn 2012-07-06 22:13:24