30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

454 14. Namespaces<br />

geme<strong>in</strong>samen Namespace haben wollen, dann fällt auf, dass diese e<strong>in</strong>fache<br />

Klammerung eigentlich noch nicht der Weisheit letzter Schluss se<strong>in</strong> kann.<br />

Denn damit müsste ja alles, was zu e<strong>in</strong>em Namespace gehört auch geme<strong>in</strong>sam<br />

<strong>in</strong> e<strong>in</strong>em File stehen, was sicher nicht im S<strong>in</strong>ne des Erf<strong>in</strong>ders ist. Zum Glück<br />

ist dem auch nicht so, denn Namespaces s<strong>in</strong>d offen. Das bedeutet, dass an<br />

beliebig vielen verschiedenen Orten Teile e<strong>in</strong>es Namespaces existieren können.<br />

Solange der Bezeichner des Namespaces derselbe ist, werden sie auch vom<br />

Compiler demselben Namespace zugerechnet. Mit jeder neuen Def<strong>in</strong>ition,<br />

die zu e<strong>in</strong>em Namespace gehört, wird dieser also erweitert. Genau diese<br />

Eigenschaft nützen wir <strong>in</strong> e<strong>in</strong>em kurzen Beispiel aus. Werfen wir e<strong>in</strong>en Blick<br />

auf e<strong>in</strong> Template e<strong>in</strong>es primitiven Stacks (simple_stack.h):<br />

1 // s i m ple stack . h − a simple stack template<br />

2<br />

3 #ifndef s i m p l e s t a c k h<br />

4 #def<strong>in</strong>e s i m p l e s t a c k h<br />

5<br />

6 #<strong>in</strong>clude <br />

7 #<strong>in</strong>clude ” u s e r t y p e s . h”<br />

8<br />

9 namespace Datastructures<br />

10 {<br />

11 us<strong>in</strong>g std : : r a n g e e r r o r ;<br />

12 us<strong>in</strong>g std : : b a d a l l o c ;<br />

13<br />

14 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

15 /∗<br />

16 ∗ Stack<br />

17 ∗<br />

18 ∗ j u s t a simple stack template<br />

19 ∗<br />

20 ∗/<br />

21<br />

22 template <br />

23 class Stack<br />

24 {<br />

25 public :<br />

26 static const u<strong>in</strong>t32 MAX NUM ELEMENTS = 8;<br />

27 private :<br />

28 Stack ( const Stack&) {}<br />

29 const Stack& operator = (<br />

30 const Stack&) { return (∗ this ) ; }<br />

31 protected :<br />

32 ElementType ∗ elements ;<br />

33 u<strong>in</strong>t32 num elements ;<br />

34 public :<br />

35 Stack ( )<br />

36 throw( b a d a l l o c ) : num elements (0)<br />

37 {<br />

38 elements = new ElementType [MAX NUM ELEMENTS] ;<br />

39 }<br />

40<br />

41 virtual ˜ Stack ( )<br />

42 throw( )<br />

43 {<br />

44 delete [ ] elements ;<br />

45 }<br />

46<br />

47 virtual void push ( ElementType const &element )<br />

48 throw( r a n g e e r r o r )

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!