c++链表模板和节点

标签 c++ templates nodes

我目前正在尝试为我的列表类创建一个模板 - 它应该能够创建继承 Employee(经理和员工)的 Employee 类的链表。

我对如何初始化列表感到困惑,因为当我这样做时,它要求数据类型。

这是我的代码的一些片段:

template <class DataType>
struct Node
{
    DataType data;
    Node<DataType> *next;
};



template <class DataType>
class List
{
public:
    List();
    List(const List<DataType> & aplist);
    ~List();

    bool search(const DataType & element);  

    Node<DataType> first();
private:
    Node<DataType>* head;
    Node<DataType>* current;              
};

template <class DataType>
List<DataType>::List() 
{
    head = NULL;
}

template <class DataType>
List<DataType>::List(const List<DataType> & aplist)
{
    deepCopy(aplist);
}
... etc

在创建列表时我有点困惑;以前当我在 .header 文件中有我的链接列表时,我使用了 List myList;所以现在我尝试了这个

List<> myList;

它需要一个数据类型。所以我尝试了 List< DataType> myList;它不喜欢 DataType,即使它在我的模板中声明了?我还尝试了 Node 和 get,但错误提示类模板“Node”的参数列表丢失。

我想知道是否有人可以解释如何启用我的链表 (myList) 进行初始化,然后允许输入 3 个不同的类 Employee(基类)、(Manager 和 Staff inherit Employee)。

干杯

最佳答案

我建议您尝试使用类似 int 的实现:

List<int> myList;

如果可行,那么使用模板的链表的基本实现就是正确的。现在您可以开始创建自己的数据类型,例如员工类(如果您还没有)并使用该数据类型。它应该以完全相同的方式工作。

请注意类模板中的名称“DataType”实际上不是数据类型,而是真实数据类型的占位符,如 int、Employee、...

关于c++链表模板和节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27425149/

相关文章:

c++ - 模拟游戏机的内存映射,根据提供的地址访问不同的位置

c++ - 编译器强制语义类型

c++ - 区分模板类构造函数中的 1D 和 2D 容器 (SFINAE)

C++ 链表 : Node inside of another Node

C++ getline cin 问题

c++ - OpenCV grab 在网络摄像头上什么都不做

c++ - 隐式模板构造函数被忽略

c++ - 如何 typedef 模板类?

reactjs - 如何使用 React Flow 增加边缘下降区

C链表searchNode/freeList方法(seg fault)