찾다

 >  Q&A  >  본문

c++类模板使用

我没有系统的学过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;
}
迷茫迷茫2768일 전552

모든 응답(1)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-17 13:37:06

    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;
    }

    회신하다
    0
  • 취소회신하다