C ++对“ LinkedList <int> :: append(int)”的未定义引用

时间:2018-11-22 21:53:51

标签: c++ linked-list codeblocks

我正在尝试根据本指南编写一个带有通用对象的链表: 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;
    }
};

0 个答案:

没有答案