问题描述
我没有系统的学过c++,现在想使用类模板这个特性,但编译不通过,好像使用不了头文件,麻烦大家帮忙看看,下面是部分代码 报错内容
error C2065: “LinkList”: 未声明的标识符error C2062: 意外的类型“int”error C2065: “ll”: 未声明的标识符
头文件
#ifdef LinkList_H#define LinkList_H template <typename T> class LinkList { public: struct node{ T element; node *next;}; node *initList(int lenght){node *head=new node; node *p=head; p->element=0; for (int i = 0; i < lenght-1; i++) {p->next = new node;p=p->next;} p->next=NULL; return head;} void insertList(node *&list, int n, T element){ node *p=list; for (int i = 0; i < n-1; i++) {p=p->next; } node *Node=new node; Node->next=p->next; Node->element=element; p->next=Node;}#endif
cpp文件
#include'LinkList.h'#include<iostream>using namespace std;int main(){ LinkList<int> ll; LinkList::node *list = ll.initList(4); ll.insertList(list, 4, 9); return 0;}
问题解答
回答1:C++ 中的模板分为类模板和函数模板,类模板的模板参数必须提供,函数模板的模板参数一般可以省略。
#include'LinkList.h'#include<iostream>using namespace std;int main(){ //LinkList ll; LinkList<int> ll; // 提供模板参数 LinkList<int>::node *list = ll.initList(4); // 同上 ll.insertList(list, 4, 9); return 0;}