模板化C ++错误

时间:2015-01-20 05:18:46

标签: c++ templates linked-list

我正在编写与链表相关的代码,我想模拟整个程序。这是我写的:

template<typename T>
class Node
{
public:
    T data;
    Node* next;
    Node(){};
};
class List{
public:Node<T>* head;
List() { head= NULL; } //constructor 

为此,它适用于我的其他功能。但是,我也在尝试编写一个函数副本,它将列表复制到另一个。

List Copy(List copyme){
    List<T> x; 
    x = new List<T>;
    Node<T>* current = copyme.head;
    while (current != NULL){
        x.ListInsertHead(current->data);
        current = current->next;
    }
    x.ListReverse();
    return x;
    };

我收到有关模板化课程的错误,在这种情况下我应该写些什么?谢谢。错误只是未声明的标识符,这是因为我错误地模板化了。

1 个答案:

答案 0 :(得分:0)

试试这个:

template<typename T>
class Node
{
    public:
       T data;
       Node* next;
       Node(T val){ data = val; }
};

template <typename T>
class List
{
public:
       Node<T>* head;
       List() { head= NULL; } //constructor
};

template <typename T> 
List <T> Copy(List <T> copyme)
{
    List<T> x; 
    x = new List<T>;
    Node<T>* current = copyme.head;
    while (current != NULL){
        x.ListInsertHead(current->data);
        current = current->next;
    }
    x.ListReverse();
    return x;
}