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.

13.7 Source Code Organisation 449<br />

Dadurch ist zwar weiterh<strong>in</strong> alles, also auch die Def<strong>in</strong>ition, <strong>in</strong>kludiert, jedoch<br />

bekommen die User der Templates nicht mehr alles auf e<strong>in</strong>mal zu Gesicht,<br />

was sie im Pr<strong>in</strong>zip gar nicht sehen sollen. Sie sollen sich ja nur für die<br />

Deklarationen <strong>in</strong>teressieren, nicht für die Def<strong>in</strong>itionen.<br />

• Der so <strong>in</strong> zwei Teile zerlegte Header wird wie gewohnt von den benutzenden<br />

Teilen des Templates e<strong>in</strong>gebunden.<br />

Am Beispiel betrachtet sieht dies also folgendermaßen aus: Wir schreiben<br />

e<strong>in</strong>e Template Deklaration (generic_storage.h).<br />

1 // g e n e r i c s t o r a g e . h − j u s t the d e c l a r a t i o n o f the g e n e r i c<br />

2 // storage template<br />

3<br />

4 #ifndef g e n e r i c s t o r a g e h<br />

5 #def<strong>in</strong>e g e n e r i c s t o r a g e h<br />

6<br />

7 template <br />

8 class GenericStorage<br />

9 {<br />

10 protected :<br />

11 DataType data ;<br />

12 public :<br />

13 GenericStorage ( )<br />

14 throw ( ) ;<br />

15<br />

16 GenericStorage ( const DataType &data )<br />

17 throw ( ) ;<br />

18<br />

19 GenericStorage ( const GenericStorage &s r c )<br />

20 throw ( ) ;<br />

21<br />

22 virtual GenericStorage &operator = (<br />

23 const GenericStorage &s r c )<br />

24 throw ( ) ;<br />

25<br />

26 virtual operator DataType ( )<br />

27 throw ( ) ;<br />

28<br />

29 } ;<br />

30<br />

31 // the f o l l o w i n g i n c l u s i o n i s unfortunately not avoidable<br />

32 #<strong>in</strong>clude ” g e n e r i c s t o r a g e . cpp”<br />

33<br />

34 #endif // g e n e r i c s t o r a g e h<br />

Zu dieser Deklaration schreiben wir die entsprechenden Def<strong>in</strong>itionen <strong>in</strong> das<br />

File generic_storage.cpp:<br />

1 // g e n e r i c s t o r a g e . cpp − d e f i n i t i o n s o f the template methods<br />

2<br />

3 #<strong>in</strong>clude ” g e n e r i c s t o r a g e . h”<br />

4<br />

5 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

6 /∗<br />

7 ∗/<br />

8 export template <br />

9 GenericStorage:: GenericStorage ( )<br />

10 throw( )<br />

11 {

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!