Nicht definiert Bezug auf Vorlage Mitglieder
-
29-09-2019 - |
Frage
Ich bin neu in C ++ und Herstellung eine Hausaufgabe mithilfe von NetBeans IDE auf Ubuntu 10.04. Ich verwende g ++ als C ++ Compiler.
Die Fehlermeldung:
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()'
Und mein zugehöriger Code:
Maze.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';
}
}
}
...
...
Und entsprechend dem Fehlerausgang, wobei jede Zeile, die ich verwendet Stapel Variable hat einen Fehler. Undefinierte Referenz
Stack.cpp
#include "Stack.h"
...
...
template <class T> Stack<T>::Stack()
{
// Create the stac!
create();
}
...
Ich habe es gegoogelt, kann aber das Problem nicht lösen. Ich denke, es ist etwas falsch mein beinhaltet, um, oder vielleicht ich die Zeiger in einer falschen Weise verwendet wird.
Ich habe auch versucht, eine Make-Datei selbst zu erstellen, aber das Ergebnis nicht ändern. Ich bereit, diese Make-Datei nach diesem Link: http: // www. cs.umd.edu/class/spring2002/cmsc214/Tutorial/makefile.html
Hier ist meine Make-Datei:
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
Wie kann ich diesen Fehler zu überwinden? Irgendwelche Ideen?
Lösung
Stack ist eine Vorlage. Die vollständige Definition hat in seiner Header-Datei zu gehen. Das heißt, nicht in eine .h trennen und eine CPP-Datei.