mrs_schokokeks
Grünschnabel
Danke für die Antworten!
Aufgabe:
stlist.h
Ich hatte ähnliche Aufgaben mit push und pop, aber hier habe ich das Problem, dass Stack keine Template-Klasse ist. Ich muss also auf push und pop "über" Stack zugreifen (fuechse.push), aber push() soll Template sein (hoffe ich).
Ich hatte in main statt
Stack fuechse
das hier geschrieben:
STlist<Stack*> fuechse;
dann sind push und pop Methoden von Stack, alles in Template und es hat funktioniert!
Aber wie greife ich hier über fuchs der nicht-templateKlasse Stack auf die template-Methode push()?
Aufgabe:
Code:
void main()
{
Stack fuechse;
for( int i = 1 ; i <= 8 ; i++)
{
if(getZufallsBit())
fuechse.push(new Fix());
else
fuechse.push(new Foxi());
}while(fuechse.pop());
Alsooo, neuer Versuch:
}
Code:
#include <iostream>
#include <string>
#include "stlist.h"
#include <ctime>
using namespace std;
class Stack
{
private:
Stack* f;
public:
Stack(){};
/*void push(Stack* fu) ********? Zugriff auf void push(T ding) aus stlist****
{
f=fu;
}
bool pop()
{
return true;
}*/
};
class Fix:public Stack
{
public:
Fix(){ /*cout << "Fix.Objekt" << endl;*/};
};
class Foxi:public Stack
{
public:
Foxi(){/*cout<< "Foxi.Objekt"<< endl;*/};
};
stlist.h
Code:
#include <iostream>
using namespace std;
template<typename T>
class STlist
{
enum{anzahl = 10};
T stapel[anzahl];
int top;
public:
STlist()
{
top = 0;
};
void push(T ding)
{
stapel[top] = ding;
top++;
}
bool pop()
{
if( top == NULL)
return false;
else
top--;
cout << stapel[top];
return true;
}
};
Ich hatte ähnliche Aufgaben mit push und pop, aber hier habe ich das Problem, dass Stack keine Template-Klasse ist. Ich muss also auf push und pop "über" Stack zugreifen (fuechse.push), aber push() soll Template sein (hoffe ich).
Ich hatte in main statt
Stack fuechse
das hier geschrieben:
STlist<Stack*> fuechse;
dann sind push und pop Methoden von Stack, alles in Template und es hat funktioniert!
Aber wie greife ich hier über fuchs der nicht-templateKlasse Stack auf die template-Methode push()?