Lista de argumentos para o modelo de classe está ausente

Estou tendo um problema curioso e não sei bem qual é o problema. Estou criando uma classe chamada LinkedArrayList que usa um modelo de nome de arquivo, conforme mostrado no código abaixo:

#pragma once

template <typename ItemType>

class LinkedArrayList 
{

private:

class Node {
    ItemType* items;
    Node* next;
    Node* prev;
    int capacity;
    int size;
};

Node* head;
Node* tail;
int size;

public:

void insert (int index, const ItemType& item);
ItemType remove (int index);
int find (const ItemType& item);
};

Agora, isso não causa erros ou problemas. No entanto, a criação das funções no arquivo .cpp me fornece o erro "A lista de argumentos do modelo de classe 'LinkedArrayList' está ausente." Também diz que ItemType é indefinido. Aqui está o código, muito simples, no .cpp:

#include "LinkedArrayList.h"

void LinkedArrayList::insert (int index, const ItemType& item)
{}

ItemType LinkedArrayList::remove (int index)
{return ItemType();}

int find (const ItemType& item)
{return -1;}

Parece que tem algo a ver com o modelo, porque se eu comentar e alterar os ItemTypes nas funções para ints, ele não dará nenhum erro. Além disso, se eu apenas fizer todo o código no .h em vez de ter um .cpp separado, ele funcionará bem também.

Qualquer ajuda sobre a origem do problema seria muito apreciada.

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion