我试图在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。任何关于如何解决这个烂摊子的建议都值得赞赏!