Templates
-wrax- 02.06.2002 - 20:20 852 7
-wrax-
<...>
|
kann mir jemand von euch templates erklären...
wir muessen in ein beliebiges vererbungs-programm, tamplates einbauen (container-templ)
ich hab keine ahnung was der lehrer von uns will...
|
-wrax-
<...>
|
wäre nett wenn mir jemand an hand eines kleinen beispiel, container-tamplates demonstriert...
|
irreversible
oberspammer
|
welche sprache?? c++?
|
-wrax-
<...>
|
hab schon eine eigene loesung.... c++ (turboc-compiler)
ihr braucht nicht mehr zu antworten -------------------------------------------------------
#include<iostream.h> #include<conio.h> #include<dos.h>
class oben { protected: int o; };
class mitte1: public oben { protected: int m1; }; class mitte2: public oben { protected: int m2; };
class unten1: public mitte1 { public: void eingabe () { cout<<"\n O: "; cin>>o; cout<<"\n M1: "; cin>>m1; cout<<"\n U1: "; cin>>u1; } void ausgabe () { cout<<"\n Ausg. O: "<<o; cout<<"\n\n Ausg. M1: "<<m1; cout<<"\n\n Ausg. U1: "<<u1; }
protected: int u1; }; class unten2: public mitte2 { public: void eingabe () { cout<<"\n O: "; cin>>o; cout<<"\n M2: "; cin>>m2; cout<<"\n U2: "; cin>>u2; } void ausgabe () { cout<<"\n Ausg. O: "<<o; cout<<"\n\n Ausg. M2: "<<m2; cout<<"\n\n Ausg. U2: "<<u2; }
protected: int u2; };
template<class T> class stack { public: stack (int s=10): size(s), top(-1) {dat = new T[size];} ~stack() {delete [] dat;}
// push legt ein element auf das stack void push(const T& t) { top=top+1; dat[top]=t; } // pop entfaernt ein elemen von stack void pop() { top=top-1; }
void ausgabe() { dat[top].ausgabe(); } void eingabe() { dat[top].eingabe(); }
// printInfo gibt informationen ueber das Stack aus void printInfo () {cout<<" Element: "<<top+1<<" von "<<size;}
// ueberprueft ob stack leer ist int isEmpty() { if(top==-1) return 1; //1=leer else return 0; //0=nicht leer } // ueberprueft ob stack voll ist int isFull() { if(top==size-1) return 1; //1=voll else return 0; //0=nicht voll }
protected:
int size; // groeáe des stack int top; // gibt aktuelle position im Stack an T* dat; // fuer template };
void main () { clrscr(); textmode(C4350);
int menue,hilf;
// Instanzen der 2 untersten Klassen unten1 u1; unten2 u2;
// Stack wird instanziert stack<unten1> unten1Stack(5); stack<unten2> unten2Stack;
do { clrscr();
cout<<"\n\n ----------------------------"; cout<<"\n unten1 -> "; unten1Stack.printInfo(); cout<<"\n\n unten2 -> "; unten2Stack.printInfo(); cout<<"\n ----------------------------";
cout<<"\n\n\n"; cout<<"\n --------------------------------"; cout<<"\n I [1] Datensatz unten1 Eingabe I"; cout<<"\n I [2] Datensatz unten2 Eingabe I"; cout<<"\n I I"; cout<<"\n I [3] Datensatz unten1 Ausgabe I"; cout<<"\n I [4] Datensatz unten2 Ausgabe I"; cout<<"\n I I"; cout<<"\n I [0] Ende I"; cout<<"\n --------------------------------"; cout<<"\n Eingabe: "; cin>>menue;
switch (menue) { case 1: hilf=unten1Stack.isFull();
if(hilf!=1) { cout<<"\n\n\n\n"; u1.eingabe(); unten1Stack.push(u1); } else cout<<"\n\n Container-Klasse ist voll -> keine Eingabe moeglich!", getch(); break;
case 2: hilf=unten2Stack.isFull(); if(hilf!=1) { cout<<"\n\n\n\n"; u2.eingabe(); unten2Stack.push(u2); } else cout<<"\n\n Container-Klasse ist voll -> keine Eingabe moeglich!", getch(); break;
case 3: hilf=unten1Stack.isEmpty();
if(hilf!=1) { cout<<"\n\n\n\n"; unten1Stack.ausgabe(); getch(); unten1Stack.pop(); } else cout<<"\n\n Container-Klasse ist leer -> keine Ausgabe moeglich!", getch(); break;
case 4: hilf=unten2Stack.isEmpty(); if(hilf!=1) { cout<<"\n\n\n\n"; unten2Stack.ausgabe(); getch(); unten2Stack.pop(); } else cout<<"\n\n Container-Klasse ist leer -> keine Ausgabe moeglich!", getch(); break;
case 0: break;
default: cout<<"\n Ungueltige Eingabe..."; delay(300); break; }
} while(menue!=0); }
|
FMFlash
tranceCoder
|
omg es leben die sinnlosen beispiele falls du noch was zum nachlesen brauchst und es noch nicht selbst gefunden hast, das imo beste c++ grundlagen-tutorial (auch immer gut zum nachschlagen wenn man mal eine kleinigkeit vergessen sollte) gibts unter http://www.cplusplus.com/doc/tutorial/
|
Vir@s
Code Monkey
|
Ich würde gern deRelict zietieren: ajo, FYI: nochmal so an schwall sourcecode posten und du bist weg aus diesem forum
|
FMFlash
tranceCoder
|
geh das bissl text
|
Vir@s
Code Monkey
|
|