Template probleme



  • naja so ähnlich.

    Die strings werden in der erzeuger klasse zu der entsprechenden Klasse aufgelöst.
    Die übergeb ich dann dem Konstruktor
    spricht das was ich über templates zur kompiler zeit machen wollte mach ich jetzt mit Polymorthie zur laufzeit
    ich versuchs jetzt mal umzusetzen und wenns tut kann ich ja mal posten

    hab mir deins noch mal angeschaut.
    Erfüllt zwar doch die aufgabe die ich lösen wollte, bloß schaut das, naja
    nicht so übersichtlich aus. Ich muss dann halt mit der Laufzeitpolyorthie leben.
    Dafür sollte der Quellcode lesbarer sein und einen geringeren overhead sollte dies auch erzeugen wobei ich mir hier nicht sicher bin.
    Bei der Template Methode wird dann doch zur Kompailerzeit jede denkbare klasse die sich ergeben könnte erstelt also jede kombination?

    aber noch mals danke
    auf die Lösung wär ich von alleine glaub nicht gekommen (Template)



  • Ich weiss jetzt nicht genau, welche Lösung du meinst, aber ja templates erzeugen mehr Code, allerdings ohne Nachteile zur Laufzeit. Die Laufzeitpolymorphie ist wessentlich flexibler, jedoch hat es Nachteile in der Geschwindigkeit zur Laufzeit. (jedoch sollten diese Aspekte vernachlässigt werden und eher auf das Problem, welches du lösen willst ausgerichtet sein).

    Bei der Template Methode wird dann doch zur Kompailerzeit jede denkbare klasse die sich ergeben könnte erstelt also jede kombination?

    Wenn nötig ja.



  • hab mir jetzt sowas vorgestellt

    Basis
    {
     virtual void doSomething();
     //...
    }
    
    Unterklasse1:Basis
    {
     //...
     Unterklasse1(Eigenschaft1*,Eigenschaft2*);
     void doSomething();
     //...
     Eigenschaft1* e1;
     Eigenschaft2* e2;
    }
    
    Baisi* Erzeuger::getClass(string Klasse,sting eigenschaft1, string eigenschaft2)
    {
     Eigenschaft1* e1=NULL;
     Eigenschaft1* e2=NULL;
     //...
     else if(eigenschaft1=="Eigenschaft1X") e1=new Eigenschaft1X;
     //...
     else if (eigenschaft2=="Eigenschaft2X") e2=new Eigenschaft2X;
     //...
     else if (Klasse=="UnterKlasse1") return Unterklasse1(e1,e2);
     //...
    }
    
    //Eigenschaften1X ist von Eigenschaften1 abgeleitet
    

    Das was ich hier jetzt über die Polymorthie gemacht hab war am anfang mein ziel durch Tamplets zu machen.



  • 123 schrieb:

    leider auch nicht ganz das was ich suche.
    denk ich muss das über die Pholymorthie machen

    Ich habe ja extra gesagt, dass mein Code zur Laufzeit funktioniert. Die Funktionstemplates dienen nur zur Verhinderung der Codeduplizierung.

    Wo liegt also das Problem?



  • nirgends 😉
    ich implementier beide Möglichkeiten mal und untersuch dan mal das Laufzeitverhalten (Geschwindigkeit etc.) und Größe, wobei größe heute weniger das Problem ist.
    Kennst du einen guten Profiler auser CodeAnalyst von AMD der auch gut auf Intel Prozesoren funktioniert. Sollte aber kostenlos sein


Anmelden zum Antworten