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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top