Referencia indefinida a miembros de la plantilla

Soy nuevo en C ++ y estoy preparando una tarea usando NetBeans IDE en Ubuntu 10.04. Yo uso g ++ como un compilador de C ++.

El mensaje de error:

build/Debug/GNU-Linux-x86/Maze.o: In function `Maze':
Maze/Maze.cpp:14: undefined reference to `Stack<Coordinate>::Stack()'
Maze/Maze.cpp:14: undefined reference to `Stack<Coordinate>::Stack()'
Maze/Maze.cpp:69: undefined reference to `Stack<Coordinate>::push(Coordinate)'
Maze/Maze.cpp:79: undefined reference to `Stack<Coordinate>::isEmpty()'
Maze/Maze.cpp:87: undefined reference to `Stack<Coordinate>::destroy()'

Y mi código relacionado:

Laberinto.h
#include "Coordinate.h"
#include "Stack.h"
....
....
/**
 * Contains the stack object
 *
 * @var  Stack stack
 * @access private
 */
Stack<Coordinate> *stack;
...
...
Maze.cpp
#include "Maze.h"
...
...
Maze::Maze()
{
    // IT SHOWS THAT THE FOLLOWING LINE HAS AN ERROR///
    stack = new Stack<Coordinate>;
    ///////////////////////////////////////////////////

    for( int y=0; y<8; y++ )
    {
        for( int x=0; x<8; x++ )
        {
            maze[y][x] = '0';
        }
    }
}
...
...

Y de acuerdo con la salida de error, cada línea que uséapilar la variable tiene un error: referencia indefinida.

Stack.cpp
#include "Stack.h"
...
...
template <class T> Stack<T>::Stack()
{
    // Create the stac!
    create();
}
...

Lo busqué en Google, pero no pude resolver el problema. Creo que hay algo mal con mi orden de inclusión, o tal vez usé los punteros de manera incorrecta.

También intenté crear un archivo MAKE por mí mismo, pero el resultado no cambió. He preparado este archivo MAKE de acuerdo con este enlace:http://www.cs.umd.edu/class/spring2002/cmsc214/Tutorial/makefile.html

Aquí está mi archivo MAKE:

maze: Maze.o Stack.o Coordinate.o
 g++ -Wall Maze.o Stack.o Coordinate.o -o maze

Maze.o: Maze.cpp Maze.h Stack.h Coordinate.h
 g++ -Wall -c Maze.cpp

Stack.o: Stack.cpp Stack.h
 g++ -Wall -c Stack.cpp

Coordinate.o: Coordinate.cpp Coordinate.h
 g++ -Wall -c Coordinate.cpp

Maze.h: Stack.h Coordinate.h

¿Cómo podría superar este error? ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta