Optionale Funktionalitaet durch unvollstaendige Instanziierung geht nicht
-
Hallo,
Folgender Code ist aus Alexandrescu's "Modern C++ Design" von 2001 entnommen und duerfte daher vllt einigen bekannt sein. Unter "Optional Functionality Through Incomplete Instantiation", was ich in etwa wie im Titel des Threads uebersetzen wuerde, ist auf Seite 13 wird es etwas unheimlich, folgender Code wird praesentiert:
// Library Code template< template <class> class CreationPolicy > class WidgetManager : public CreationPolicy< Widget > { // ... void SwitchPrototype(Widget* pNewPrototype) { CreationPolicy< Widget >& myPolicy = *this; delete myPolicy.getPrototype(); myPolicy.setPrototype(pNewPrototype); } };Fragen (nja vorausgesetzt ich habe das richtig uebersetzt):
1. Beginnend mit der Syntax, was bedeutet das <class> in der ersten Zeile eigentlich genau:template< template <class> class CreationPolicy >Dann der Inhalt: So wie ich das lese erzeuge ich einen Zeiger auf den Inhalt des this Pointers und delete diesen dann. Danach setze ich das per Zeiger uebergene pNewPrototype an diese Stelle. Mein Verstaendnisproblem ist irgendwie..
2. Einerseits was hat das mit Policies zu tun? Ich kann mit dem setzen oder deleten einer Variable doch weder die Vererbungsstruktur, noch die Templatetypen der Instanz veraendern und beides waere doch essentiell fuer Policies, bzw fuer die Auswahl einer Policy?!
3. Und andererseits, was will er denn mit dem Code eigentlich bezwecken?
