我目前正在尝试为我的列表类创建一个模板 - 它应该能够创建继承 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/