我有这个我正在创建的模板类
template <class T> class ArrayLLN {
private:
ArrayLLN *next;
T *item;
public:
ArrayLLN(T i, ArrayLLN *n);
~ArrayLLN();
void insert(T n, int i, int m);
ArrayLLN *getnext();
T *getitem();
T remove(int i, int m);
};
我遇到问题的方法如下。
ArrayLLN *getnext();
并写为
template <class T> ArrayLLN ArrayLLN <T> :: *getnext(){return next;}
按照目前的编写,我收到错误&#34;错误C2955:&#39; ArrayLLN&#39;:使用类模板需要模板参数列表&#34;
以下配置产生了其他错误
template <class T> ArrayLLN *ArrayLLN <T> :: getnext(){return next;)
如何解决此错误?
这可能是这些宣言吗?
template <class T> T *ArrayLLN<T> :: getitem(){return item;}
template <class T> ArrayLLN<T> *ArrayLLN<T>::getnext() { return next; }
template <class T> T ArrayLLN <T> :: remove (int i, int m){
T *tmp == NULL;
if(i == m && next){
tmp = item;
item = next ->getitem();
next = next->getnext();
}
else if (i > m){
m++;
tmp = next -> remove(i,m);
}
return tmp;
}
答案 0 :(得分:2)
正确的语法是这样的:
// +-- argument list here +-- bracket
// v v not paren
template <class T> ArrayLLN<T> *ArrayLLN<T>::getnext() { return next; }
答案 1 :(得分:1)
在类中,ArrayLLN是注入的类名,允许您省略模板参数列表。在课堂之外,你必须提供它。其次,明星是在错误的地方。
template <class T> ArrayLLN<T>* ArrayLLN <T> :: getnext(){return next;}