Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

24.4.2 Die Vorbereitung eines Templates

24.4.2 Die Vorbereitung eines Templates

Wie eben erwähnt, sollte man sich erst einmal eine konkrete Klasse bauen, bevor man dann ein Template daraus macht. Deswegen sehen Sie hier zunächst eine ganz normale Stackklasse, welche Float Werte aufnehmen kann. Schauen wir uns also zuerst die Header-Datei an.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
					
#pragma once

// Stackklasse, welche Floats aufnehmen kann
class CFloatStack {
	private:
		struct SStackElement {
			float		fValue;
			SStackElement*	pNext;
		};

		// Zeiger auf das Oberste Element
		SStackElement*		m_pStackPointer;

	public:
		// Initialisieren
		CFloatStack();
		// Freigeben
		~CFloatStack();

		// Etwas auf den Stack legen
		void	Append(float fItem);
		// Etwas vom Stack runter nehmen
		float	Remove();
};
					

Der Einfachheit halber, habe ich lediglich die zwei zusätzlichen Methoden "Append", zum Hinzufügen von Elementen und "Remove", zum Entfernen von Elementen, eingebaut. Sicher könnte man noch weitere Methoden einbauen, um z.B. alle Elemente auf dem Stack auszugeben, aber darum soll es jetzt nicht gehen. Schauen Sie sich nun die Implementierung in der zugehörigen CPP Datei an.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
					
#include <stdlib.h>
#include "FloatStack.h"



// Initialisieren /////////////////////////////////////////////////////////////
CFloatStack::CFloatStack() 
	: m_pStackPointer(NULL)
{} // CFloatStack /////////////////////////////////////////////////////////////



// Freigeben //////////////////////////////////////////////////////////////////
CFloatStack::~CFloatStack() {
	// Solange noch etwas auf dem Stack ist
	while (this->m_pStackPointer != NULL) this->Remove();
} // ~CFloatStack /////////////////////////////////////////////////////////////



// Etwas auf den Stack legen //////////////////////////////////////////////////
void CFloatStack::Append(float fItem) {
	SStackElement* pElement	= new SStackElement();
	pElement->fValue	= fItem;
	pElement->pNext		= this->m_pStackPointer;
	this->m_pStackPointer	= pElement;
} // Append ///////////////////////////////////////////////////////////////////



// Etwas vom Stack runter nehmen //////////////////////////////////////////////
float CFloatStack::Remove() {
	// Nur wenn was auf dem Stack liegt
	if (this->m_pStackPointer != NULL) {
		SStackElement* pElement	= this->m_pStackPointer;
		this->m_pStackPointer	= pElement->pNext;
		float fReturn		= pElement->fValue;
		pElement->pNext		= NULL;
		delete pElement;

		return fReturn;
	} else {
		return 0.0f;
	} // end of if
} // Remove ///////////////////////////////////////////////////////////////////
					

Bitte verzeihen Sie mir, dass ich hier etwas sparsam mit den Kommentaren war, aber auf die Funktion der Klasse, kommt es hier weniger an. Damit Sie sehen, dass es funktioniert, zeige ich noch kurz, wie die Implementierung in der "main" aussehen könnte.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
					
#include <stdio.h>
#include "FloatStack.h"



// Hauptfunktion der Anwendung ////////////////////////////////////////////////
int main (int argc, char** argv) {
	CFloatStack oStack;
	oStack.Append(3.7f);
	oStack.Append(4.6f);

	printf("%g\n", oStack.Remove());
	printf("%g\n", oStack.Remove());

	return 0;
} // main /////////////////////////////////////////////////////////////////////
					

Ausgabe:

4.6
3.7
		

Jetzt, da die Klasse gebaut und getestet wurde, kann ich mich daran machen, aus ihr ein Template zu bauen.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012