我正在尝试编写一个模板类来帮助程序员编写正确的代码。给定从旧金山到华盛顿的路线和从华盛顿到纽约的路线,它将计算从旧金山经华盛顿到纽约的路线。当给出从旧金山到洛杉矶和华盛顿到纽约的路线时,编译器会报错。
这是类(没有正常的主力功能):
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>();
}
不幸的是,这不起作用。我收到“无效使用不完整类型”错误。没有专门化的相同类型的函数确实可以编译。我究竟做错了什么?