Online-Skater
Erfahrenes Mitglied
Hallo ich hab ein Problem mit dem Copy-Constructor des Stacks, aber man kann wohl allgemein fragen wie man einen solchen erstellt. Ich habe eine Version programmiert die eigentlich nicht funktioniert, da wenn man einen Stack kopiert (stack1 = stack2) und dann stack2 leert, stack1 verrückt spielt in Form von Unsinn der über den Bildschirm fegt.
Denke das sind die Schnipsel die ausschlaggebend sind. Ich kopiere einen Stack, lösche den alten (empty()) und gebe dann den kopierten aus und erhalte Müll 
Ich weiß nicht was an meiner Variante falsch ist und ich weiß das es mit den Zeigern Probleme gibt und ich da was zerschossen hab oder so ähnlich
Vielen Dank für euer Bemühen.
C++:
//Klasse
struct ELEM
{
int Value;
ELEM *prev;
};
class Stack
{
usint length;
ELEM *first;
public:
Stack();
Stack(const Stack &s);
bool is_empty();
void empty();
void push(int Value);
bool pop(int &Value);
void show();
};
// Stack is empty ?
inline bool Stack::is_empty()
{
return length==0;
}
// Copy ctor
Stack::Stack(const Stack &s)
:length(0), first(0)
{
ELEM *puffer;
puffer = s.first;
while(puffer->prev != 0)
{
push(puffer->Value);
puffer = puffer->prev;
}
}
// Insert an Elem into the Stack
void Stack::push(int Value)
{
ELEM *E = new ELEM;
E->Value = Value;
ELEM *puffer;
puffer = this->first;
this->first = E;
this->first->prev = puffer;
this->length++;
}
// Delete all Elems in Stack
void Stack::empty()
{
if (!is_empty())
{
ELEM *puffer;
while(this->length != 0)
{
puffer = this->first;
this->first = this->first->prev;
delete puffer;
this->length--;
}
}
}

Ich weiß nicht was an meiner Variante falsch ist und ich weiß das es mit den Zeigern Probleme gibt und ich da was zerschossen hab oder so ähnlich

Vielen Dank für euer Bemühen.