C++中的模板

Template in C++

本文关键字:C++      更新时间:2023-10-16

我正在尝试实现一个存储多种类型项目的单向链表。所以我遇到了模板,但是当我尝试运行以下代码时,编译器给了我几个链接错误(LNK 2019:未解析的外部符号)。我还没有真正做任何事情,也无法弄清楚出了什么问题。谁能指出我的错误??

Singlylinkedlist.h

template <class Item>
class SinglyLinkedList
{
public:
    SinglyLinkedList();
    ~SinglyLinkedList();
private:
    template <class I>
    struct Node {
        I item;
        Node<I> *next;
    };
    Node<Item> *head; 
};

单链接列表.cpp

#include "singlylinkedlist.h"
template <class Item>
SinglyLinkedList<Item>::SinglyLinkedList()
{
    head = NULL;
}

主.cpp

#include <iostream>
#include "singlylinkedlist.h"
using namespace std;
int main()
{
    SinglyLinkedList<string> list;
}

代码存在许多小问题,例如,您尚未实现析构函数,并且您实际上不需要模板化 Node。按如下方式更改您的实现,

// singlylinkedlist.h
template <class Item>
class SinglyLinkedList
{
public:
    SinglyLinkedList() : head(NULL) {}
    ~SinglyLinkedList() {}
private:
    struct Node {
        Item item;
        Node *next;
    };
    Node *head; 
};
// main.cpp
#include "singlylinkedlist.h"
using namespace std;
int main()
{
    SinglyLinkedList<string> list;
}

您没有实现析构函数:

template <class Item>
SinglyLinkedList<Item>::~SinglyLinkedList()
{
    //cleanup
}
相关文章:
  • 没有找到相关文章