我正在尝试根据本指南编写一个带有通用对象的链表: https://medium.com/journey-of-one-thousand-apps/generics-in-c-5b0354786b54。 当我将声明和隐含内容放在同一个文件中时,它可以工作,但是我很难将代码分为源文件和头文件。
作为参考,我正在使用code :: blocks。我试着读取linked_list.cpp文件,尝试将其所在目录添加到构建选项->搜索目录->链接器下的搜索目录中,并尝试从命令行手动在gcc和g ++中进行编译他们都给了我同样的错误。当我试图从源文件中分离头文件时,我显然做错了,我只是弄不清楚是什么。我下面的代码中的相关片段。
main.cpp:
int main() {
LinkedList<int> *list = new LinkedList<int>();
list->append(1);
list->append(13);
list->append(32);
list->displayListValues();
return 0;
}
linked_list.h
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
using namespace std;
template <class T>
struct node {
T data;
node *next;
node *prev;
};
template <class T>
class LinkedList {
private:
node<T> *head, *tail;
public:
LinkedList<T>();
bool isEmpty();
void displayListValues();
void append(T value);
};
#endif
linked_list.cpp
template <class T>
void LinkedList<T>::append(T value) {
node<T> *new_node = new node<T>;
new_node->data = value;
if (head == NULL) {
head = new_node;
tail = new_node;
new_node = NULL;
} else {
new_node->prev = tail;
tail->next = new_node;
tail = new_node;
new_node = NULL;
}
};