Implementierung von doppelt verknüpften Listen mit Zeigern C ++

Ich unterrichte mich selbst in C ++ und versuche, eine doppelt verknüpfte Liste in C ++ unter Verwendung von Zeigern zu implementieren, die teilweise vollständig sind. Mir ist bewusst, dass der Code derzeit keine Probleme mit herabhängenden Knoten oder Ausgabefehlern hat, die ich als Nächstes implementieren werde. Der Code sollte jedoch mindestens in der Lage sein, ein Listenobjekt zu erstellen und Elemente hinzuzufügen. Derzeit wird eine Fehlermeldung angezeigt, wenn ich versuche, einen Konstruktor für die Liste aufzurufen, der besagt, dass ich eine Konvertierung von LinkedList * in LinkedList vom nicht skalaren Typ anfordere. Warum wird meine Liste als Zeiger deklariert? Jede Hilfe wäre sehr dankbar, danke!

LinkedList.h
#ifndef LINKEDLIST_H
#define LINKEDLIST_H

struct dataElement {
  int key;
  int id;
};

struct Node
{
    dataElement data;
    Node* next;
    Node* prev;
};


class LinkedList
{
public:
    /** Default constructor */
    LinkedList();
    /** Default destructor */
    virtual ~LinkedList();
    void addAtFront(int newElement);
    void addAtBack(int newElement);
    int removeTop();
    int removeBottom();
    int getTop();
    int getBottom();
    int findKey(int keyToFind);
protected:
private:
    Node* head;
    Node* tail;
    int size;
};

#endif // LINKEDLIST_H


LinkedList.cpp
#include "LinkedList.h"
#include <iostream>
#include <stdlib.h>


LinkedList::LinkedList()
{
size = 0;
}

LinkedList::~LinkedList()
{
//dtor
}

void LinkedList::addAtFront(int newElement)
{
if (size == 0)
{
    Node temp;
    temp.data.id = newElement;
    temp.data.key = 0;
    head = &temp;
    tail = &temp;
    ++size;
}
else
{
    Node temp;
    temp.data.id = newElement;
    temp.data.key = size;
    temp.next = head;
    head->prev = &temp;
    head = &temp;
    ++size;
}
}

void LinkedList::addAtBack(int newElement)
{
if (size == 0)
{
    Node temp;
    temp.data.id = newElement;
    temp.data.key = 0;
    head = &temp;
    tail = &temp;
    ++size;
}
else
{
    Node temp;
    temp.data.id = newElement;
    temp.data.key = 0;
    tail->next = &temp;
    temp.prev = tail;
    tail = &temp;
    ++size;
}
}

LinkedListTest.cpp
#include "LinkedListTest.h"
#include "LinkedList.h"

int main()
{
LinkedList list = new LinkedList();
list.addAtFront(0);
}