如何在 cpp 中使用范围解析运算符创建专业化模板
How to create specialization template using scope resolution operator in cpp
template<class t> class Temp{
static t x;
public:
Temp(){};
t increment();
~Temp(){/*body of destructor is important.*/};
};
template<class t>t Temp<t>::x;
template<class t> t Temp<t>::increment(){
return ++x;
}
/*Template specialization starts.*/
template<>class Temp<int>{
int x;
public:
Temp():x(0){};
int increment();
~Temp(){};
};
/*Below is the error part.*/
template<>int Temp<int>::increment(){
return 0;
}
问题是最后一段代码。
编译错误
->错误:'int Temp::increment()' 的模板 ID 'increment<>' 不匹配任何模板声明
您不必将 template<> 与专门的成员函数一起使用,因为编译器知道您正在为 int 类型专门化 Temp。所以一个空模板<>给出了错误。
int Temp<int>::increment() {
return ++x;
}
template是用来告诉编译器T是template param,仅此而已。但在您的情况下,您专攻 int 类型,因此您不必指定模板 <>。 template<> 仅适用于 class 而不适用于在 class.
之外定义的成员函数
template<class t> class Temp{
static t x;
public:
Temp(){};
t increment();
~Temp(){/*body of destructor is important.*/};
};
template<class t>t Temp<t>::x;
template<class t> t Temp<t>::increment(){
return ++x;
}
/*Template specialization starts.*/
template<>class Temp<int>{
int x;
public:
Temp():x(0){};
int increment();
~Temp(){};
};
/*Below is the error part.*/
template<>int Temp<int>::increment(){
return 0;
}
问题是最后一段代码。 编译错误 ->错误:'int Temp::increment()' 的模板 ID 'increment<>' 不匹配任何模板声明
您不必将 template<> 与专门的成员函数一起使用,因为编译器知道您正在为 int 类型专门化 Temp。所以一个空模板<>给出了错误。
int Temp<int>::increment() {
return ++x;
}
template是用来告诉编译器T是template param,仅此而已。但在您的情况下,您专攻 int 类型,因此您不必指定模板 <>。 template<> 仅适用于 class 而不适用于在 class.
之外定义的成员函数