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?



    1. klar, entweder oder - beides geht nicht.

    2. 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:

    1. 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 😉


Anmelden zum Antworten