policies (modernes c++-design)
-
hallo,
ich hab 2 fragen zu policies.
zuerst mal eine frage zu einem beispiel aus
modernes c++-design (kapitel 1.5 policies und policy klassen):template <class T> struct OpNewCreator { static T* Create() {return new T;} // statisch } // aehnliches fuer struct MallocCreator template <class T> struct PrototypeCreator { T* Create() {...} // nicht statisch }
meine frage bezieht sich darauf, dass die methode create
einmal statisch und einmal nicht statisch ist.
wie kann ich die policies hier anwenden. im buch heisst es:
"Die Creator Policy gibt beispielsweise nicht an, dass Create
statisch oder virtuell sein muss."aber wie soll das gehen?
in dem fall von statisch und nicht statisch sind doch
2 faelle zu unterscheiden:// 1 Policy p; p.Create(); // 2 Policy::Create();
entweder kann ich nur policies mit statischen
oder nur policies mit nicht statischen methoden verweden.
oder seh ich das falsch?sind die policies nicht sehr unflexiebel? ich kann ihnen
keine werte von aussen mit geben, da ich ja nur den
klassentyp uebergebe (und kein objekt). ich setze ja immer
voraus, das die policy einen bestimmten konstruktor x hat.oder?
-
-
klar, entweder oder - beides geht nicht.
-
du kannst policies auch als objekte uebergeben, siehe zB allocator bei der stl
aber ein policy implementiert eigentlich eine strategie wie etwas zu machen ist. ein zusaetzlicher user defined wert ist hier nur selten noetig. und wenn, dann tut es oft ein compiletime wert.
aber wie gesagt: policies sind da flexibel, da kannst du fast alles machen. du musst beim design nur die richtige variante waehlen...
-
-
Shade Of Mine schrieb:
- klar, entweder oder - beides geht nicht.
doch, wenn die Methode nur Klassenintern aufgerufen wird...
@entelechie
Ich würde das Buch vielleicht ersteinmal durcharbeiten und die dann verbleibenden Fragen stellen.Ist ein wirklich nettes Buch, und wenn du mit damit durch bist wirst du sehen dass Policies alles andere als unflexibel sind - eher im Gegentum, genau wie Shade schon gesagt hat.
Und wenn du ein paar Seiten (oder so) weiter blätterst wirst du auch auf die adequate Übersetzung von "Enriched Policies" stoßen und deine "Werte von außen" finden
-
ja sorry, war da vielleicht etwas ungeduldig
aber wenn ich was lese und nicht verstehe muss ichs wissen;
da sichs n paar seiten spaeter nicht aufgeklaert hat hab ich
die frage mal hier gestellt...in zukunft versuch ich mich da etwas zurueckzuhalten