Guten Tag,
wir müssen ein Stack Template erstellen um damit dann Infix und Postfix Notationen umzuwandeln bzw auszurechenen.
Nun habe ist der Stack so weit fertig, aber beim Testen meckert der Compiler rum, vielleicht kann mir jemand von euch behilflich sein und mir sagen, wo bzw was nicht passt da ich im Moment nicht aus der Compilermeldung schlau werde.
[cs]
stack.cpp:
#include "stack.h"
// Konstruktor: legt Speicherplatz für max Records an
template <class TR>
Stack<TR>::Stack(unsigned max) : top(0),m(max)
{
a=new TR[m];
}
// Destruktor
template <class TR>
Stack<TR>::~Stack()
{
delete a;
}
// oben im Stapel ablegen, Bedingung: Stapel nicht voll
template <class TR>
void Stack<TR>::Push(TR r)
{
if (!IsFull())
{
a[top]=r;
top++;
}
}
// obersten Record holen und entfernen,
// Bedingung: Stapel nicht leer
template <class TR>
TR Stack<TR>::Pop()
{
TR r; // initialer Record
if (!IsEmpty())
{
top--;
r=a[top];
}
return r;
}
// Wert des obersten Records im nicht leeren Stapel holen
template <class TR>
TR Stack<TR>::Top()
{
TR r;
if (!IsEmpty())
r=a[top-1];
return r;
}
// Anzahl der Records im Stapel
template <class TR>
unsigned Stack<TR>::Length()
{
return top;
}
// prüfen, ob Stapel leer ist
template <class TR>
bool Stack<TR>::IsEmpty()
{
if (top==0) return true; else return false;
}
// prüfen, ob Stapel voll ist
template <class TR>
bool Stack<TR>::IsFull()
{
if (top==m) return true; else return false;
}
[/cs]
[cs]
stack.h
template <class TR>
class Stack // Stapel für Records vom beliebigen Typ TR
{
public:
Stack(unsigned max);// leerer Stapel für maximal max Records
~Stack(); //Destruktor
void Push(TR r); // legt Record r oben auf Stapel
TR Pop(); // holt obersten Record vom Stapel
TR Top(); // liefert den Wert des obersten Records
unsigned Length(); // Anzahl der Records im Stapel
bool IsEmpty(); // true, wenn Stapel leer, sonst false
bool IsFull(); // true, wenn Stapel voll, sonst false
private:
unsigned m; // Arraylänge; m: max Anzahl Records
unsigned top; // zeigt auf oberste Position im Stack
TR *a; // Zeiger auf Array
};[/cs]
[cs]
main.cpp
#include "stack.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
Stack<int> meinStack1(100);
//for(int i=0;i<30;i++)
//{
// meinStack1.Push(i);
//}
//cout<<"Der Stack ist "<< meinStack1.Length() << "Werte gross."<<endl;
//cout<<"Der Stack ist voll ? "<< meinStack1.IsFull()<<endl;
//system("pause");
return 0;
}[/cs]
Folgende Fehlermeldungen:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Stack<int>::~Stack<int>(void)" (??1?$Stack@H@@QAE@XZ)" in Funktion "_main".
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Stack<int>:: Stack<int>(unsigned int)" (??0?$Stack@H@@QAE@I@Z)" in Funktion "_main".
Gruß