在C ++中使用链接列表的对象模板时出错

时间:2017-02-12 19:00:55

标签: c++ templates object linked-list

我试图在c ++中创建一个双链接对象列表。到目前为止,我有一个Node和DLinkedList类,他们使用整数,但当我尝试使用模板将类型从int转换为对象时,我得到了错误。我尝试过研究,但我找不到一个使用标题和实现文件与对象模板的好例子。有人可以帮助我吗?

这是我的头文件Node.h:

template <typename Object> 
class Node { 
public:
    Node(const Object &data, Node next, Node prev); 
    Node(const Object &data);        

    const Object& getData(); 
    Node* getNext(); 
    Node* getPrev(); 

    void setData(const Object &data); 
    void setNext(Node *next); 
    void setPrev(Node *prev);

private: 
    Object data;    
    Node *next;     
    Node *prev; 
 };
#endif

这是我的Node.cpp文件:

template <typename Object>
Node<Object>::Node(const Object &data, Node next, Node prev){
    this->data = data;
    this->next = &next;
    this->prev = &prev;
}

Node<Object>::Node(const Object &data){
    this->data = data;
    this->prev = nullptr;
    this->next = nullptr;
}

const Object& Node<Object>::getData(){
    return this->data;
}

Node* Node<Object>::getNext(){
    return this->next;
}

Node* Node<Object>::getPrev(){
    return this->prev;
}

void Node<Object>::setData(const Object &data){
    this->data = data;
}

void Node<Object>::setNext(Node *next){
    this->next = next;
}

void Node<Object>::setPrev(Node *prev){
    this->prev = prev;
}

这是我得到的最初几个错误:

Node.cpp:24:6: error: use of undeclared identifier 'Object'
Node<Object>::Node(const Object &data){
     ^
Node.cpp:24:26: error: unknown type name 'Object'
Node<Object>::Node(const Object &data){
                         ^
Node.cpp:24:15: error: extra qualification on member 'Node'
Node<Object>::Node(const Object &data){
            ~~^
Node.cpp:25:2: error: invalid use of 'this' outside of a non-static member
  function
    this->data = data;
    ^

其余代码的其余错误类似。当我在模板中定义Object时,我不明白为什么它不能识别Object。任何关于如何解决这个烂摊子的建议都值得赞赏!

0 个答案:

没有答案