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.

294 10. Memory – e<strong>in</strong> kle<strong>in</strong>es Beispiel<br />

30 word (0)<br />

31 {<br />

32 i f ( ! word )<br />

33 return ;<br />

34 word = new char [ s t r l e n ( word ) + 1 ] ;<br />

35 strcpy ( word , word ) ;<br />

36 }<br />

37<br />

38 /∗ Copy constructor<br />

39 ∗ c o p i e s the word from the o r i g i n a l<br />

40 ∗/<br />

41 WordEvent( const WordEvent & s r c ) :<br />

42 Event (WORDEVENT) ,<br />

43 word (0)<br />

44 {<br />

45 i f ( ! s r c . word )<br />

46 return ;<br />

47 word = new char [ s t r l e n ( s r c . word ) + 1 ] ;<br />

48 strcpy ( word , s r c . word ) ;<br />

49 }<br />

50<br />

51 /∗ Destructor<br />

52 ∗ d e l e t e s the copy of the word<br />

53 ∗/<br />

54 virtual ˜WordEvent ( )<br />

55 {<br />

56 delete [ ] word ;<br />

57 }<br />

58<br />

59 /∗ Returns the word that i s stored <strong>in</strong> the event<br />

60 ∗ @return The word stored <strong>in</strong> the event<br />

61 ∗/<br />

62 virtual const char ∗ getWord ( ) const<br />

63 {<br />

64 return ( word ) ;<br />

65 }<br />

66 } ;<br />

67<br />

68<br />

69 #endif // simple word event h<br />

10.2.20 SimpleInputHandl<strong>in</strong>g<br />

Im Pr<strong>in</strong>zip implementiert die Klasse SimpleInputHandl<strong>in</strong>g e<strong>in</strong>en e<strong>in</strong>fachen<br />

Dispatcher Loop, der auch nur e<strong>in</strong>en e<strong>in</strong>zigen Event Handler kennt. Diesen<br />

muss man explizit registrieren und danach kann man den Loop über die entsprechende<br />

Methode starten. Es wurde hier ke<strong>in</strong>erlei Multithread<strong>in</strong>g implementiert,<br />

deshalb kehrt die Methode runDispatcher auch nicht zurück, bis<br />

man den Loop gestoppt hat. Es ist allerd<strong>in</strong>gs garantiert, dass der Loop ohne<br />

e<strong>in</strong>en zuvor gesetzten Handler sich nicht erhängt oder endlos läuft. Falls ke<strong>in</strong><br />

Handler gesetzt wurde, kehrt diese Methode sofort zurück. Diese grandiose<br />

Klasse hat dann die folgende Form:<br />

1 // simple <strong>in</strong>put handl<strong>in</strong>g . h − a simple <strong>in</strong>put handl<strong>in</strong>g c l a s s<br />

2<br />

3 #ifndef s i m p l e i n p u t h a n d l i n g h<br />

4 #def<strong>in</strong>e s i m p l e i n p u t h a n d l i n g h<br />

5

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!