【发布时间】:2017-09-12 00:04:23
【问题描述】:
如何对模板构造函数进行特化? 为了更好的理解,我举个代码例子:
template<typename T>
class Stack {
private:
int nelem;
int size;
vector<T> stack;
public:
~Stack();
Stack<T>(int t);
void push(T data);
T pop();
T top();
int getPosTop(){return (nelem--);};
void cleanStack(){nelem = 0;};
bool StackEmpty(){ return (nelem == 0);};
bool StackFull(){ return (nelem == size);};
};
template <typename T> // constructor definition here
Stack<T>::Stack<T>(int t){
size = t;
nelem = 0;
};
int main(){
return 0;
}
它带有很多错误。 然后,我在另一篇文章中阅读了一些建议,它正在取代
template <typename T>
Stack<T>::Stack<T>(int t){
到
template <typename T> template <typename T> Stack<T>::Stack<T> (int t){
这还不够。
我错过了什么?而且,它背后的想法是什么?
【问题讨论】:
-
你不能专门化构造函数,因为构造函数不是模板。它是类模板的非模板方法。
标签: c++ c++11 templates data-structures