我正在尝试编写一个帮助程序员编写正确代码的模板类。它将计算从旧金山到纽约经华盛顿的路线,从旧金山到华盛顿的路线以及从华盛顿到纽约的路线。当从旧金山到洛杉矶和华盛顿到纽约的路线时,编译器会报告一个错误。具有模板功能,专业化的类模板
这里是类(不正常的主力功能):
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