30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

418 13. Templates<br />

1 // f<strong>in</strong>d max template function v4 . h − a f u r t h e r modification<br />

2 // with two templates that overload each other<br />

3<br />

4 #ifndef f i n d m a x t e m p l a t e f u n c t i o n h<br />

5 #def<strong>in</strong>e f i n d m a x t e m p l a t e f u n c t i o n h<br />

6<br />

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

8<br />

9 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

10 template u<strong>in</strong>t32 f<strong>in</strong>dMax (<br />

11 const ElementType ∗ elements , u<strong>in</strong>t32 num elements )<br />

12 {<br />

13 u<strong>in</strong>t32 current max = 0;<br />

14<br />

15 for ( u<strong>in</strong>t32 <strong>in</strong>dex = 0 ; <strong>in</strong>dex < num elements ; <strong>in</strong>dex++)<br />

16 {<br />

17 i f ( elements [ <strong>in</strong>dex ] > elements [ current max ] )<br />

18 current max = <strong>in</strong>dex ;<br />

19 }<br />

20 return ( current max ) ;<br />

21 }<br />

22<br />

23 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

24 template IntType f<strong>in</strong>dMax (<br />

25 const ElementType ∗ elements , IntType num elements )<br />

26 {<br />

27 IntType current max = 0;<br />

28<br />

29 for ( IntType <strong>in</strong>dex = 0 ; <strong>in</strong>dex < num elements ; <strong>in</strong>dex++)<br />

30 {<br />

31 i f ( elements [ <strong>in</strong>dex ] > elements [ current max ] )<br />

32 current max = <strong>in</strong>dex ;<br />

33 }<br />

34 return ( current max ) ;<br />

35 }<br />

36<br />

37 #endif // f i n d m a x t e m p l a t e f u n c t i o n h<br />

Hier haben wir es mit e<strong>in</strong>em Overload<strong>in</strong>g von zwei Function Templates zu<br />

tun, wobei das e<strong>in</strong>e Template nur e<strong>in</strong>en, das andere zwei Typ-Parameter<br />

entgegennimmt. Auf diese Art kann man quasi e<strong>in</strong>en default Typ-Parameter<br />

realisieren. Über explizites Angeben der Ausprägung kann man dann jeweils<br />

die e<strong>in</strong>e oder die andere Variante verwenden, wie das folgende Beispiel zeigt<br />

(f<strong>in</strong>d_max_test_v5.cpp):<br />

1 // f<strong>in</strong>d max test v5 . cpp − adapted t e s t f o r V4 the template<br />

2<br />

3 #<strong>in</strong>clude ” f<strong>in</strong>d max template function v4 . h”<br />

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

5<br />

6 us<strong>in</strong>g std : : cout ;<br />

7 us<strong>in</strong>g std : : endl ;<br />

8<br />

9 <strong>in</strong>t ma<strong>in</strong> ( <strong>in</strong>t argc , char ∗ argv [ ] )<br />

10 {<br />

11 <strong>in</strong>t32 t e s t a r r a y [ ] = { 4 , 1 , 2 , 5 , 3 } ;<br />

12<br />

13 cout

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!