[英]c++ linked list template and 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,并得到了一个错误,并说缺少类模板“ Node”的参数列表。
我想知道是否有人可以解释如何启用我的链表(myList)初始化,然后允许输入3个不同的类Employee(基类),(Manager和Staff继承Employee)。
干杯
我建议您尝试使用类似int的实现:
List<int> myList;
如果可行,则使用模板的链表的基本实现是正确的。 现在,您可以开始创建自己的数据类型,例如员工类(如果您还没有),并使用该数据类型。 它应该以完全相同的方式工作。
请注意,类模板中的名称“ DataType”实际上不是数据类型,而是诸如int,Employee,...等真实数据类型的占位符。
您需要提供要列表保留的特定数据类型。 因此,如果它将仅包含Employee实例,则可能是
List<Employee> myList
但是,如果您想要多态行为,则将需要节点来存储指针。 例如
List<Employee*> myList
或者,取决于您的资源管理需求
List<std::unique_ptr<Employee>> myList
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.